unit VENDA;
// Exemplo de Cupom Fiscal
// ECF SWEDA Versão 1.1

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, ComCtrls, math, idGlobal, ActnList;

type
  TForm1 = class(TForm)
    BtFechar: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    GroupBox4: TGroupBox;
    edtECF_AbrePortaSerial: TButton;
    Button5: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    gbpCupom: TGroupBox;
    btnECF_AbreCupomMFD: TButton;
    btnECF_VendeItem: TBitBtn;
    BitBtn3: TBitBtn;
    Button17: TButton;
    btnCancelaItemAnterior: TButton;
    btnECF_FechaCupom: TBitBtn;
    Button6: TButton;
    Button18: TButton;
    Button19: TButton;
    GroupBox5: TGroupBox;
    BitBtn4: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    Button22: TButton;
    BitBtn10: TBitBtn;
    GroupBox1: TGroupBox;
    Button7: TButton;
    Button4: TButton;
    GroupBox3: TGroupBox;
    Button2: TButton;
    TabSheet5: TTabSheet;
    TabSheet6: TTabSheet;
    GroupBox6: TGroupBox;
    Button24: TButton;
    Button9: TButton;
    Button11: TButton;
    Button12: TButton;
    Button15: TButton;
    Button16: TButton;
    BitBtn5: TBitBtn;
    GroupBox7: TGroupBox;
    Button13: TButton;
    Button14: TButton;
    TabSheet7: TTabSheet;
    GroupBox2: TGroupBox;
    Button1: TButton;
    TabSheet8: TTabSheet;
    BitBtn1: TBitBtn;
    GroupBox8: TGroupBox;
    Label2: TLabel;
    EdtRaz: TEdit;
    Label3: TLabel;
    CbFant: TEdit;
    Label4: TLabel;
    EdtEndereco: TEdit;
    Label5: TLabel;
    EdtEndereco2: TEdit;
    BitBtn14: TBitBtn;
    Button10: TButton;
    BitBtn12: TBitBtn;
    BitBtn15: TBitBtn;
    gpbGeraArquivo: TGroupBox;
    edtCaminho: TEdit;
    AbrirArquivo: TOpenDialog;
    bitAbrir: TSpeedButton;
    BitBtn13: TBitBtn;
    edtDataDia: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    lblMeios: TLabel;
    BitBtn16: TBitBtn;
    GroupBox9: TGroupBox;
    edtIndice: TEdit;
    edtLegenda: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Button21: TButton;
    BitBtn18: TBitBtn;
    TabSheet9: TTabSheet;
    BitBtn17: TBitBtn;
    SpeedButton1: TSpeedButton;
    BitBtn19: TBitBtn;
    BitBtn20: TBitBtn;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    GroupBox10: TGroupBox;
    edtDtInicial: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    edtDtFinal: TEdit;
    edtArquivo: TEdit;
    Label13: TLabel;
    edtPath: TEdit;
    Label14: TLabel;
    SpeedButton5: TSpeedButton;
    edtTipo: TEdit;
    Button27: TButton;
    Button26: TButton;
    Salvar: TSaveDialog;
    BitBtn21: TBitBtn;
    BitBtn2: TBitBtn;
    Label15: TLabel;
    edtIndiceLeg: TEdit;
    GroupBox11: TGroupBox;
    edtforma: TEdit;
    Button20: TButton;
    edtTipoV: TEdit;
    Label16: TLabel;
    GroupBox12: TGroupBox;
    Label17: TLabel;
    Label18: TLabel;
    edtCupons: TEdit;
    edtItens: TEdit;
    BitBtn11: TBitBtn;
    GroupBox13: TGroupBox;
    btnJanelas: TSpeedButton;
    SpeedButton6: TSpeedButton;
    btnMovimento: TButton;
    TabSheet10: TTabSheet;
    edtMeioPagamento: TComboBox;
    btnSIN1: TSpeedButton;
    btnSIN2: TSpeedButton;
    btnSIN3: TSpeedButton;
    btnSIN4: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    Button23: TButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton15: TSpeedButton;
    Button8: TButton;
    sbtnECF_AbreCupomMFD: TSpeedButton;
    TabSheet11: TTabSheet;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton18: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton14: TSpeedButton;
    GroupBox14: TGroupBox;
    edtAliquota: TEdit;
    edtTipoAliquota: TEdit;
    Label19: TLabel;
    SpeedButton19: TSpeedButton;
    TabSheet12: TTabSheet;
    Button3: TButton;
    SpeedButton20: TSpeedButton;
    ActionList1: TActionList;
    GBConfig: TGroupBox;
    SpeedButton13: TSpeedButton;
    RGui: TRadioGroup;
    GroupBox16: TGroupBox;
    Label20: TLabel;
    CBModo: TComboBox;
    GroupBox17: TGroupBox;
    ComboBox1: TComboBox;
    GroupBox18: TGroupBox;
    Label21: TLabel;
    CBBeep: TComboBox;
    btConfig: TSpeedButton;
    SpeedButton21: TSpeedButton;
    BTVI: TBitBtn;
    BitBtn22: TBitBtn;
    Bt_AbreRemoto: TButton;
    procedure BtFecharClick(Sender: TObject);
    procedure btnECF_AbreCupomMFDClick(Sender: TObject);
    procedure edtECF_AbrePortaSerialClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure edtSint1Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Bt_AbreRemotoClick(Sender: TObject);
    procedure btnCancelaItemAnteriorClick(Sender: TObject);
    procedure btnECF_FechaCupomClick(Sender: TObject);
    procedure btnECF_VendeItemClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure BitBtn10Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn13Click(Sender: TObject);
    procedure BitBtn14Click(Sender: TObject);
    procedure BitBtn15Click(Sender: TObject);
    procedure bitAbrirClick(Sender: TObject);
    procedure BitBtn16Click(Sender: TObject);
    procedure BitBtn17Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure BitBtn18Click(Sender: TObject);
    procedure BitBtn19Click(Sender: TObject);
    procedure BitBtn20Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure BitBtn21Click(Sender: TObject);
    procedure BTVIClick(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure btnJanelasClick(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure btnMovimentoClick(Sender: TObject);
    procedure btnSIN1Click(Sender: TObject);
    procedure btnSIN2Click(Sender: TObject);
    procedure btnSIN3Click(Sender: TObject);
    procedure btnSIN4Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton15Click(Sender: TObject);
    procedure sbtnECF_AbreCupomMFDClick(Sender: TObject);
    procedure SpeedButton16Click(Sender: TObject);
    procedure SpeedButton17Click(Sender: TObject);
    procedure SpeedButton18Click(Sender: TObject);
    procedure SpeedButton19Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure SpeedButton20Click(Sender: TObject);
    procedure btConfigClick(Sender: TObject);
    procedure SpeedButton21Click(Sender: TObject);
    procedure BitBtn22Click(Sender: TObject);
  private
    { Private declarations }
  public
     procedure RetornoECF ();
     procedure StatusECF ();
    { Public declarations }
  end;

var
  Form1: TForm1;
  Comando: array[0..512] of Char;
  Resposta: integer;

function ECF_AbrePortaSerial: Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaPortaSerial: Integer; StdCall; External 'CONVECF.dll';
function ECF_AbreConnectC(Meio:integer; path:String): Integer; StdCall; External 'CONVECF.dll';

// Meios de pagamento

function ECF_VerificaFormasPagamentoMFD(FormasPagamento : pchar): Integer;
StdCall; External 'CONVECF.DLL';

//Alterando o Registro do Windows

Function ECF_Registry(): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_AlteraRegistry(chave: pchar; valori: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_Path(path: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_PathMFD(path: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_ZAutomatica(zauto: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_Verao(verao: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_CupomMania(mania: pchar): Integer; StdCall; External 'CONVECF.DLL';

Function ECF_Registry_Log(log: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_AplMensagem1(apl: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_AplMensagem2(apl: pchar): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_Default(): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_Registry_RetornaValor(ecf: pchar; chave: pchar; valor: pchar): Integer; StdCall; External 'CONVECF.DLL';

// Funções do Cupom Fiscal

function ECF_LeituraX: Integer; StdCall; External 'CONVECF.dll';
function ECF_ReducaoZ( cData: String; cHora: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_AbreCupom( CGC_CPF: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_AbreCupomMFD(CGC: string;  Nome: string; Endereco : string): Integer; StdCall; External 'CONVECF.DLL';
function ECF_VendeItem( Codigo: String; Descricao: String; Aliquota: String; TipoQuantidade: String; Quantidade: String; CasasDecimais: Integer; ValorUnitario: String; TipoDesconto: String; Desconto: String): Integer; StdCall; External 'CONVECF.dll';
function ECF_CancelaItemGenerico( NumeroItem: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaCupom(FormaPagamento: String;AcrescimoDesconto: String;TipoAcrescimoDesconto: String;ValorAcrescimoDesconto: String;ValorPago: String; Mensagem: String): Integer;StdCall; External 'CONVECF.DLL';
function ECF_CancelaCupom: Integer; StdCall; External 'CONVECF.dll';
function ECF_AumentaDescricaoItem( nome: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_AbreRelatorioGerencial: Integer; StdCall; External 'CONVECF.dll';
function ECF_UsaRelatorioGerencialMFD( nome: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaRelatorioGerencial: Integer; StdCall; External 'CONVECF.dll';
function ECF_SubTotal(Subt:pchar): Integer; StdCall; External 'CONVECF.dll';
function ECF_IniciaFechamentoCupom(acresdesc,tipo,valor:string): Integer; StdCall; External 'CONVECF.dll';
function ECF_CancelaItemAnterior: Integer; StdCall; External 'CONVECF.DLL';
function ECF_IdentificaConsumidor( nomei: String; endi: String; cpfi: String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_TerminaFechamentoCupom( Mensagem: String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_EfetuaFormaPagamentoMFD(FormaPagamento,ValorFormaPagamento,Parcelas,DescricaoFormaPagto: string): Integer;StdCall; External 'CONVECF.DLL';
function ECF_UltimoItemVendido( NumeroItem:pchar ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_VendeItemDepartamento(Codigo: pchar;Descricao: pchar;Aliquota: pchar;ValorUnitario: pchar;Quantidade: pchar;Acrescimo: pchar;Desconto: pchar;IndiceDepartamento: pchar;UnidadeMedida: pchar): integer;StdCall; External 'CONVECF.DLL';
function ECF_StatusCupomFiscal(cupa: string): Integer; StdCall; External 'CONVECF.DLL';
function ECF_EstornoFormasPagamento(FormaOrigem: string; FormaDestino: string; Valor: string ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_EfetuaFormaPagamentoIndice(s: String; c: string): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_EfetuaFormaPagamentoIndiceDescricaoForma (s: string; v: string; d: string): Integer; StdCall; External 'CONVECF.DLL';


// Funções das Operações Não Fiscais
function ECF_AbreRecebimentoNaoFiscalMFD(CGC: string;  Nome: string; Endereco : string): Integer; StdCall; External 'CONVECF.dll';
function ECF_EfetuaRecebimentoNaoFiscalMFD(tipo, valor:string): Integer; StdCall; External 'CONVECF.dll';
function ECF_TotalizaRecebimentoMFD:Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaRecebimentoNaoFiscalMFD(texto:string):Integer; StdCall; External 'CONVECF.dll';
function ECF_Sangria( Valor: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_AbreComprovanteNaoFiscalVinculadoMFD(FormaPagamento,Valor,NumeroCupom,CGC,nome,Endereco : string): Integer;
StdCall; External 'CONVECF.DLL';

//function ECF_IniciaModoTEF: Integer; StdCall; External 'CONVECF.dll';
function ECF_AbreComprovanteNaoFiscalVinculado( FormaPagamento: String; Valor: String; NumeroCupom: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_UsaComprovanteNaoFiscalVinculado( Texto: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_UsaComprovanteNaoFiscalVinculadoTEF( Texto: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaComprovanteNaoFiscalVinculado: Integer; StdCall; External 'CONVECF.dll';
//function ECF_FinalizaModoTEF: Integer; StdCall; External 'CONVECF.dll';
function ECF_SegundaViaNaoFiscalVinculadoMFD(): Integer; StdCall; External 'CONVECF.dll';
function ECF_EstornoNaoFiscalVinculadoMFD(CGC,Nome,Endereco : string): Integer;StdCall; External 'CONVECF.DLL';
// Programação
function  ECF_ProgramarParametrosDiversos(ecf: String;loja: String; extra: String; qt: String; iss: String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_NomeiaRelatorioGerencialMFD(Indice, Descricao : string): Integer; StdCall; External 'CONVECF.DLL';
Function  ECF_ProgramarCliche (razao: String; fantasia: String; endereco:  String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_NomeiaTotalizadorNaoSujeitoIcms( Indice: Integer; Totalizador: String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_ProgramaFormaPagamentoMFD(FormaPagto, OperacaoTef: pchar) : Integer; StdCall; External 'CONVECF.DLL';
function ECF_ProgramaAliquota( Aliquota: String; ICMS_ISS: Integer ): Integer;StdCall; External 'CONVECF.DLL';

//Outras funções
function ECF_CapturaDocumentos(tipo,faixai,faixaf,arquivo,log:string):integer;StdCall; External 'CONVECF.dll';
function ECF_EnviarLogotipoCliche(logo:string):integer;StdCall; External 'CONVECF.dll';
function ECF_RetornaTipoEcf(tipo:pchar):integer;StdCall; External 'CONVECF.dll';
function ECF_NumeroCaixa(Caixa:pchar):integer;StdCall; External 'CONVECF.dll';
function ECF_VerificaModoOperacao(Modo: pchar): Integer; StdCall; External 'CONVECF.DLL'
function ECF_VerificaEstadoImpressoraMFD(  Var ACK: Integer;  Var ST1: Integer;  Var ST2: Integer; Var ST3: Integer ): Integer;StdCall; External 'CONVECF.DLL';
function ECF_RetornoImpressoraMFD(Var ACK: Integer; Var ST1: Integer; Var ST2: Integer;    Var ST3: Integer ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_AtivaDesativaCorteProximoMFD(flag:integer): Integer; StdCall; External 'CONVECF.DLL';
function ECF_DataHoraImpressora( data: String; hora: String ): Integer; StdCall; External 'CONVECF.dll';
function ECF_StatusRelatorioGerencial(Status:pchar):integer;StdCall; External 'CONVECF.dll';
function ECF_TipoUltimoDocumento(status:string): Integer;StdCall; External 'CONVECF.dll';
function ECF_NumeroSerieMFD(NumeroSerie : string): Integer;StdCall; External 'CONVECF.DLL';
function ECF_StatusComprovanteNaoFiscalVinculado(vinc: String): Integer;StdCall; External 'CONVECF.DLL';
function ECF_VerificaImpressoraLigada: Integer; StdCall; External 'CONVECF.DLL';
function ECF_VerificaTotalizadoresNaoFiscais( Totalizadores: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_VerificaTotalizadoresNaoFiscaisMFD(Totalizadores : string): Integer; StdCall; External 'CONVECF.DLL';
function ECF_AutenticacaoMFD(Linhas, Texto : string) : Integer; StdCall; External 'CONVECF.DLL';
function ECF_VerificaDocAutenticacao: Integer; StdCall; External 'CONVECF.DLL';
function ECF_GrandeTotal( GrandeTotal: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_NumeroCupom( NumeroCupom: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_ContadorCupomFiscalMFD(CuponsEmitidos : String): Integer; StdCall; External 'CONVECF.DLL';
function ECF_DataMovimentoUltimaReducaoMFD( cData: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_DataMovimento( Data: String ): Integer; StdCall; External 'CONVECF.DLL';

//Aciona Gaveta
function ECF_AcionaGaveta:Integer; StdCall; External 'CONVECF.DLL' Name 'ECF_AcionaGaveta';

//Nota Fiscal Pulista
function ECF_DownloadMFD(Arquivo: String; TipoDownload: String; ParametroInicial: String; ParametroFinal: String; UsuarioECF: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_DownloadMF( Arquivo: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_ReproduzirMemoriaFiscalMFD(tipo: String;fxai: String;fxaf:  String; asc: String;bin: String): Integer;StdCall; External 'CONVECF.DLL';
function ECF_GeraRegistrosCAT52MFD(Arquivo:String;Data:String): Integer; StdCall; External 'CONVECF.DLL';

//Codigo de Barras
function ECF_ConfiguraCodigoBarrasMFD( Altura: Integer; Largura: Integer; PosicaoCaracteres: Integer; Fonte: Integer; Margem: Integer): Integer; StdCall; External 'CONVECF.DLL';
function ECF_CodigoBarrasCODE39MFD( Codigo: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_CodigoBarrasEAN13MFD( Codigo: String ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_CodigoBarrasPDF417MFD( NivelCorrecaoErros: Integer; Altura: Integer; Largura: Integer; Colunas: Integer; Codigo: String ): Integer; StdCall; External 'CONVECF.DLL';

// Janelas
function ECF_LigaDesligaJanelas( impressora: String; resto: String): Integer; StdCall; External 'CONVECF.DLL';

// SINTEGRA
function ECF_RegistrosTipo60: Integer; StdCall; External 'CONVECF.DLL' Name 'ECF_RegistrosTipo60';
function ECF_RelatorioTipo60Mestre: Integer; StdCall; External 'CONVECF.DLL' Name 'ECF_RelatorioTipo60Mestre';
function ECF_RelatorioTipo60Analitico: Integer; StdCall; External 'CONVECF.DLL' Name 'ECF_RelatorioTipo60Analitico';
function ECF_RelatorioTipo60AnaliticoMFD: Integer; StdCall; External 'CONVECF.DLL' Name 'ECF_RelatorioTipo60AnaliticoMFD';
function ECF_RelatorioSintegraMFD(iRelatorios : Integer; cArquivo: pchar; cMes: pchar; cAno: pchar; cRazaoSocial: pchar; cEndereco: pchar; cNumero: pchar; cComplemento: pchar; cBairro: pchar; cCidade : pchar; cCEP: pchar; cTelefone   : pchar; cFax: pchar; cContato: pchar ): Integer; StdCall; External 'CONVECF.DLL';
function ECF_GeraRelatorioSintegraMFD (iRelatorios : Integer;cArquivoOrigem : pchar;cArquivoDestino: pchar;cMes           : pchar;cAno           : pchar;cRazaoSocial   : pchar;cEndereco      : pchar;cNumero        : pchar;cComplemento   : pchar;cBairro        : pchar;cCidade        : pchar;cCEP           : pchar;cTelefone      : pchar;cFax           : pchar;cContato       : pchar ): Integer;StdCall; External 'CONVECF.DLL';
function ECF_ArquivoSintegra2004MFD(itipo: Integer; cArquivo: pchar; cMes: pchar; cAno: pchar; cMesf: pchar; cAnof: pchar; cRazaoSocial: pchar; cEndereco: pchar; cNumero: pchar; cComplemento: pchar; cBairro: pchar; cCidade: pchar; cUF: pchar; cCEP: pchar; cTelefone: pchar; cFax: pchar; cContato: pchar): Integer; StdCall; External 'CONVECF.DLL';

// Captura Serial
function ECF_LeituraXSerial: Integer; StdCall; External 'CONVECF.DLL';
function ECF_LeituraMemoriaFiscalSerialData(DataInicial: pchar; DataFinal: pchar ): Integer; StdCall; External 'CONVECF.DLL';

//verifica redução Z
Function ECF_VerificaZPendente(zpen: string): Integer; StdCall; External 'CONVECF.DLL';

//Verifica formas de pagamento
Function ECF_VerificaFormasPagamentoEx(FPag: string): Integer; StdCall; External 'CONVECF.DLL';

//Configuração - disponivel somente na versão 5.0.0.2 ou superior- convecf.dll
Function ECF_ConfigurarECF(guilho: string; vel: string; modo: string; beep:string): Integer; StdCall; External 'CONVECF.DLL';

function ECF_InicioFimCOOsMFD( cCOOIni, cCOOFim: String ): Integer; StdCall; External 'CONVECF.DLL';


//PAF/ECF
//Function ECF_FlagsFiscais3MFD(Var Flag: Integer) : Integer; StdCall; External 'CONVECF.DLL';
Function ECF_DataHoraGravacaoUsuarioSWBasicoMFAdicional( datusu, datsof, Adic: String) : Integer; StdCall; External 'CONVECF.DLL';
Function ECF_VerificaModeloEcf(): Integer;StdCall; External 'CONVECF.DLL';
Function ECF_FlagsFiscais3MFD(Flag: Integer) : Integer; StdCall; External 'CONVECF.DLL';
Function ECF_CodigoModeloFiscal(cniee: string; descr: string): Integer; StdCall; External 'CONVECF.DLL';

//Cheque
function ECF_LeituraChequeMFD(CodigoCMC7 : String): Integer;StdCall; External 'CONVECF.DLL';
function ECF_ProgramaArredondamento: Integer; StdCall; External 'CONVECF.DLL';

//Versao da DLL
function ECF_VersaoDll( Versao: String): Integer; StdCall; External 'CONVECF.DLL';
Function ECF_ObterMensagemStatus(erro: string): Integer; StdCall; External 'CONVECF.DLL';
function ECF_DataHoraUltimoDocumentoMFD( cDataHora: pchar ): integer; StdCall; External 'CONVECF.DLL';

Implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.RetornoECF ();
        var sack,St1,st2,st3: integer;
var vMsg, ss       : string;
begin
      Resposta := ECF_RetornoImpressoraMFD(sack,St1,St2,St3);
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Verifica Retorno Impressora:'+inttostr(Resposta));
        Memo1.Lines.Add('Estado =...ACK: '+inttostr(sack)+'...ST1: '+inttostr(St1)+'...ST2: '+inttostr(St2)+'...ST3: '+inttostr(St3));

    vMsg := '';
    ss   := '';

    if (st3 >= 0) and (st3 <= 208) then
    begin
        case st3 of
            0  : ss := 'COMANDO OK                                                                    ';
            1  : ss := 'COMANDO INVÁLIDO                                                              ';
            2  : ss := 'ERRO DESCONHECIDO                                                             ';
            3  : ss := 'NÚMERO DE PARÂMETRO INVÁLIDO                                                  ';
            4  : ss := 'TIPO DE PARÂMETRO INVÁLIDO                                                    ';
            5  : ss := 'TODAS ALÍQUOTAS JÁ PROGRAMADAS                                                ';
            6  : ss := 'TOTALIZADOR NÃO FISCAL JÁ PROGRAMADO                                          ';
            7  : ss := 'CUPOM FISCAL ABERTO                                                           ';
            8  : ss := 'CUPOM FISCAL FECHADO                                                          ';
            9  : ss := 'ECF OCUPADO                                                                   ';
            10 : ss := 'IMPRESSORA EM ERRO                                                            ';
            11 : ss := 'IMPRESSORA SEM PAPEL                                                          ';
            12 : ss := 'IMPRESSORA COM CABEÇA LEVANTADA                                               ';
            13 : ss := 'IMPRESSORA OFF LINE                                                           ';
            14 : ss := 'ALÍQUOTA NÃO PROGRAMADA                                                       ';
            15 : ss := 'TERMINADOR DE STRING FALTANDO                                                 ';
            16 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE O TOTAL DO CUPOM FISCAL                       ';
            17 : ss := 'CUPOM FISCAL SEM ITEM VENDIDO                                                 ';
            18 : ss := 'COMANDO NÃO EFETIVADO                                                         ';
            19 : ss := 'SEM ESPAÇO PARA NOVAS FORMAS DE PAGAMENTO                                     ';
            20 : ss := 'FORMA DE PAGAMENTO NÃO PROGRAMADA                                             ';
            21 : ss := 'ÍNDICE MAIOR QUE NÚMERO DE FORMA DE PAGAMENTO                                 ';
            22 : ss := 'FORMAS DE PAGAMENTO ENCERRADAS                                                ';
            23 : ss := 'CUPOM NÃO TOTALIZADO                                                          ';
            24 : ss := 'COMANDO MAIOR QUE 7Fh (127d)                                                  ';
            25 : ss := 'CUPOM FISCAL ABERTO E SEM ÍTEM                                                ';
            26 : ss := 'CANCELAMENTO NÃO IMEDIATAMENTE APÓS                                           ';
            27 : ss := 'CANCELAMENTO JÁ EFETUADO                                                      ';
            28 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO OU JÁ EMITIDO                  ';
            29 : ss := 'MEIO DE PAGAMENTO NÃO PERMITE TEF                                             ';
            30 : ss := 'SEM COMPROVANTE NÃO FISCAL ABERTO                                             ';
            31 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO JÁ ABERTO                                    ';
            32 : ss := 'REIMPRESSÃO NÃO PERMITIDA                                                     ';
            33 : ss := 'COMPROVANTE NÃO FISCAL JÁ ABERTO                                              ';
            34 : ss := 'TOTALIZADOR NÃO FISCAL NÃO PROGRAMADO                                         ';
            35 : ss := 'CUPOM NÃO FISCAL SEM ÍTEM VENDIDO                                             ';
            36 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE TOTAL CNF                                      ';
            37 : ss := 'MEIO DE PAGAMENTO NÃO INDICADO                                                ';
            38 : ss := 'MEIO DE PAGAMENTO DIFERENTE DO TOTAL DO RECEBIMENTO                           ';
            39 : ss := 'NÃO PERMITIDO MAIS DE UMA SANGRIA OU SUPRIMENTO                               ';
            40 : ss := 'RELATÓRIO GERENCIAL JÁ PROGRAMADO                                             ';
            41 : ss := 'RELATÓRIO GERENCIAL NÃO PROGRAMADO                                            ';
            42 : ss := 'RELATÓRIO GERENCIAL NÃO PERMITIDO                                             ';
            43 : ss := 'MFD NÃO INICIALIZADA                                                          ';
            44 : ss := 'MFD AUSENTE                                                                   ';
            45 : ss := 'MFD SEM NÚMERO DE SÉRIE                                                       ';
            46 : ss := 'MFD JÁ INICIALIZADA                                                           ';
            47 : ss := 'MFD LOTADA                                                                    ';
            48 : ss := 'CUPOM NÃO FISCAL ABERTO                                                       ';
            49 : ss := 'MEMÓRIA FISCAL DESCONECTADA                                                   ';
            50 : ss := 'MEMÓRIA FISCAL SEM NÚMERO DE SÉRIE DA MFD                                     ';
            51 : ss := 'MEMÓRIA FISCAL LOTADA                                                         ';
            52 : ss := 'DATA INICIAL INVÁLIDA                                                         ';
            53 : ss := 'DATA FINAL INVÁLIDA                                                           ';
            54 : ss := 'CONTADOR DE REDUÇÃO Z INICIAL INVÁLIDO                                        ';
            55 : ss := 'CONTADOR DE REDUÇÃO Z FINAL INVÁLIDO                                          ';
            56 : ss := 'ERRO DE ALOCAÇÃO                                                              ';
            57 : ss := 'DADOS DO RTC INCORRETOS                                                       ';
            58 : ss := 'DATA ANTERIOR AO ÚLTIMO DOCUMENTO EMITIDO                                     ';
            59 : ss := 'FORA DE INTERVENÇÃO TÉCNICA                                                   ';
            60 : ss := 'EM INTERVENÇÃO TÉCNICA                                                        ';
            61 : ss := 'ERRO NA MEMÓRIA DE TRABALHO                                                   ';
            62 : ss := 'JÁ HOUVE MOVIMENTO NO DIA                                                     ';
            63 : ss := 'BLOQUEIO POR RZ                                                               ';
            64 : ss := 'FORMA DE PAGAMENTO ABERTA                                                     ';
            65 : ss := 'AGUARDANDO PRIMEIRO PROPRIETÁRIO                                              ';
            66 : ss := 'AGUARDANDO RZ                                                                 ';
            67 : ss := 'ECF OU LOJA IGUAL A ZERO                                                      ';
            68 : ss := 'CUPOM ADICIONAL NÃO PERMITIDO                                                 ';
            69 : ss := 'DESCONTO MAIOR QUE TOTAL VENDIDO EM ICMS                                      ';
            70 : ss := 'RECEBIMENTO NÃO FISCAL NULO NÃO PERMITIDO                                     ';
            71 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE TOTAL NÃO FISCAL                              ';
            72 : ss := 'MEMÓRIA FISCAL LOTADA PARA NOVO CARTUCHO                                      ';
            73 : ss := 'ERRO DE GRAVAÇÃO NA MF                                                        ';
            74 : ss := 'ERRO DE GRAVAÇÃO NA MFD                                                       ';
            75 : ss := 'DADOS DO RTC ANTERIORES AO ÚLTIMO DOC ARMAZENADO                              ';
            76 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR LEITURAS DA MFD                         ';
            77 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR VERSAO DO SB                            ';
            78 : ss := 'DESCRIÇÃO IGUAL A DEFAULT NÃO PERMITIDO                                       ';
            79 : ss := 'EXTRAPOLADO NÚMERO DE REPETIÇÕES PERMITIDAS                                   ';
            80 : ss := 'SEGUNDA VIA DO COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO                 ';
            81 : ss := 'PARCELAMENTO FORA DA SEQUÊNCIA                                                ';
            82 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO                                       ';
            83 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INVÁLIDA                                           ';
            84 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INCOMPLETA                                         ';
            85 : ss := 'VENDA COM VALOR NULO                                                          ';
            86 : ss := 'ESTORNO DE VALOR NULO                                                         ';
            87 : ss := 'FORMA DE PAGAMENTO DIFERENTE DO TOTAL DA SANGRIA                              ';
            88 : ss := 'REDUÇÃO NÃO PERMITIDA EM INTERVENÇÃO TÉCNICA                                  ';
            89 : ss := 'AGUARDANDO RZ PARA ENTRADA EM INTERVENÇÃO TÉCNICA                             ';
            90 : ss := 'FORMA DE PAGAMENTO COM VALOR NULO NÃO PERMITIDO                               ';
            91 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE VALOR DO ÍTEM                                  ';
            92 : ss := 'AUTENTICAÇÃO NÃO PERMITIDA                                                    ';
            93 : ss := 'TIMEOUT NA VALIDAÇÃO                                                          ';
            94 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA BILHETE DE PASSAGEM                       ';
            95 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA DE CUPOM FISCAL                           ';
            96 : ss := 'CUPOM NÃO FISCAL FECHADO                                                      ';
            97 : ss := 'PARÂMETRO NÃO ASCII EM CAMPO ASCII                                            ';
            98 : ss := 'PARÂMETRO NÃO ASCII NUMÉRICO EM CAMPO ASCII NUMÉRICO                          ';
            99 : ss := 'TIPO DE TRANSPORTE INVÁLIDO                                                   ';
            100: ss := 'DATA E HORA INVÁLIDA                                                          ';
            101: ss := 'SEM RELATÓRIO GERENCIAL OU COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO            ';
            102: ss := 'NÚMERO DO TOTALIZADOR NÃO FISCAL INVÁLIDO                                     ';
            103: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            104: ss := 'ACRÉSCIMO OU DESCONTO EM SANGRIA OU SUPRIMENTO NÃO PERMITIDO                  ';
            105: ss := 'NÚMERO DO RELATÓRIO GERENCIAL INVÁLIDO                                        ';
            106: ss := 'FORMA DE PAGAMENTO ORIGEM NÃO PROGRAMADA                                      ';
            107: ss := 'FORMA DE PAGAMENTO DESTINO NÃO PROGRAMADA                                     ';
            108: ss := 'ESTORNO MAIOR QUE FORMA PAGAMENTO                                             ';
            109: ss := 'CARACTER NUMÉRICO NA CODIFICAÇÃO GT NÃO PERMITIDO                             ';
            110: ss := 'ERRO NA INICIALIZAÇÃO DA MF                                                   ';
            111: ss := 'NOME DO TOTALIZADOR EM BRANCO NÃO PERMITIDO                                   ';
            112: ss := 'DATA E HORA ANTERIORES AO ÚLTIMO DOC ARMAZENADO                               ';
            113: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            114: ss := 'ÍTEM ANTERIOR AOS TREZENTOS ÚLTIMOS                                           ';
            115: ss := 'ÍTEM NÃO EXISTE OU JÁ CANCELADO                                               ';
            116: ss := 'CÓDIGO COM ESPAÇOS NÃO PERMITIDO                                              ';
            117: ss := 'DESCRICAO SEM CARACTER ALFABÉTICO NÃO PERMITIDO                               ';
            118: ss := 'ACRÉSCIMO MAIOR QUE VALOR DO ÍTEM                                             ';
            119: ss := 'DESCONTO MAIOR QUE VALOR DO ÍTEM                                              ';
            120: ss := 'DESCONTO EM ISS NÃO PERMITIDO                                                 ';
            121: ss := 'ACRÉSCIMO EM ÍTEM JÁ EFETUADO                                                 ';
            122: ss := 'DESCONTO EM ÍTEM JÁ EFETUADO                                                  ';
            123: ss := 'ERRO NA MEMÓRIA FISCAL CHAMAR CREDENCIADO                                     ';
            124: ss := 'AGUARDANDO GRAVAÇÃO NA MEMÓRIA FISCAL                                         ';
            125: ss := 'CARACTER REPETIDO NA CODIFICAÇÃO DO GT                                        ';
            126: ss := 'VERSÃO JÁ GRAVADA NA MEMÓRIA FISCAL                                           ';
            127: ss := 'ESTOURO DE CAPACIDADE NO CHEQUE                                               ';
            128: ss := 'TIMEOUT NA LEITURA DO CHEQUE                                                  ';
            129: ss := 'MÊS INVÁLIDO                                                                  ';
            130: ss := 'COORDENADA INVÁLIDA                                                           ';
            131: ss := 'SOBREPOSIÇÃO DE TEXTO                                                         ';
            132: ss := 'SOBREPOSIÇÃO DE TEXTO NO VALOR                                                ';
            133: ss := 'SOBREPOSIÇÃO DE TEXTO NO EXTENSO                                              ';
            134: ss := 'SOBREPOSIÇÃO DE TEXTO NO FAVORECIDO                                           ';
            135: ss := 'SOBREPOSIÇÃO DE TEXTO NA LOCALIDADE                                           ';
            136: ss := 'SOBREPOSIÇÃO DE TEXTO NO OPCIONAL                                             ';
            137: ss := 'SOBREPOSIÇÃO DE TEXTO NO DIA                                                  ';
            138: ss := 'SOBREPOSIÇÃO DE TEXTO NO MÊS                                                  ';
            139: ss := 'SOBREPOSIÇÃO DE TEXTO NO ANO                                                  ';
            140: ss := 'USANDO MFD DE OUTRO ECF                                                       ';
            141: ss := 'PRIMEIRO DADO DIFERENTE DE ESC OU 1C                                          ';
            142: ss := 'NÃO PERMITIDO ALTERAR SEM INTERVENÇÃO TÉCNICA                                 ';
            143: ss := 'DADOS DA ÚLTIMA RZ CORROMPIDOS                                                ';
            144: ss := 'COMANDO NÃO PERMITIDO NO MODO INICIALIZAÇÃO                                   ';
            145: ss := 'AGUARDANDO ACERTO DE RELÓGIO                                                  ';
            146: ss := 'MFD JÁ INICIALIZADA PARA OUTRA MF                                             ';
            147: ss := 'AGUARDANDO ACERTO DO RELÓGIO OU DESBLOQUEIO PELO TECLADO                      ';
            148: ss := 'VALOR FORMA DE PAGAMENTO MAIOR QUE MÁXIMO PERMITIDO                           ';
            149: ss := 'RAZÃO SOCIAL EM BRANCO                                                        ';
            150: ss := 'NOME DE FANTASIA EM BRANCO                                                    ';
            151: ss := 'ENDEREÇO EM BRANCO                                                            ';
            152: ss := 'ESTORNO DE CDC NÃO PERMITIDO                                                  ';
            153: ss := 'DADOS DO PROPRIETÁRIO IGUAIS AO ATUAL                                         ';
            154: ss := 'ESTORNO DE FORMA DE PAGAMENTO NÃO PERMITIDO                                   ';
            155: ss := 'DESCRIÇÃO FORMA DE PAGAMENTO IGUAL JÁ PROGRAMADA                              ';
            156: ss := 'ACERTO DE HORÁRIO DE VERÃO SÓ IMEDIATAMENTE APÓS RZ                           ';
            157: ss := 'IT NÃO PERMITIDA MF RESERVADA PARA RZ                                         ';
            158: ss := 'SENHA CNPJ INVÁLIDA                                                           ';
            159: ss := 'TIMEOUT NA INICIALIZAÇÃO DA NOVA MF                                           ';
            160: ss := 'NÃO ENCONTRADO DADOS NA MFD                                                   ';
            161: ss := 'SANGRIA OU SUPRIMENTO DEVEM SER ÚNICOS NO CNF                                 ';
            162: ss := 'ÍNDICE DA FORMA DE PAGAMENTO NULO NÃO PERMITIDO                               ';
            163: ss := 'UF DESTINO INVÁLIDA                                                           ';
            164: ss := 'TIPO DE TRANSPORTE INCOMPATÍVEL COM UF DESTINO                                ';
            165: ss := 'DESCRIÇÃO DO PRIMEIRO ÍTEM DO BILHETE DE PASSAGEM DIFERENTE DE "TARIFA"       ';
            166: ss := 'AGUARDANDO IMPRESSÃO DE CHEQUE OU AUTENTICAÇÃO                                ';
            167: ss := 'NÃO PERMITIDO PROGRAMAÇAO CNPJ IE COM ESPAÇOS EM BRANCO                       ';
            168: ss := 'NÃO PERMITIDO PROGRAMAÇÃO UF COM ESPAÇOS EM BRANCO                            ';
            169: ss := 'NÚMERO DE IMPRESSÕES DA FITA DETALHE NESTA INTERVENÇÃO TÉCNICA ESGOTADO       ';
            170: ss := 'CF JÁ SUBTOTALIZADO                                                           ';
            171: ss := 'CUPOM NÃO SUBTOTALIZADO                                                       ';
            172: ss := 'ACRÉSCIMO EM SUBTOTAL JÁ EFETUADO                                             ';
            173: ss := 'DESCONTO EM SUBTOTAL JÁ EFETUADO                                              ';
            174: ss := 'ACRÉSCIMO NULO NÃO PERMITIDO                                                  ';
            175: ss := 'DESCONTO NULO NÃO PERMITIDO                                                   ';
            176: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM SUBTOTAL NÃO PERMITIDO               ';
            177: ss := 'DATA INVÁLIDA                                                                 ';
            178: ss := 'VALOR DO CHEQUE NULO NÃO PERMITIDO                                            ';
            179: ss := 'VALOR DO CHEQUE INVÁLIDO                                                      ';
            180: ss := 'CHEQUE SEM LOCALIDADE NÃO PERMITIDO                                           ';
            181: ss := 'CANCELAMENTO ACRÉSCIMO EM ÍTEM NÃO PERMITIDO                                  ';
            182: ss := 'CANCELAMENTO DESCONTO EM ÍTEM NÃO PERMITIDO                                   ';
            183: ss := 'NÚMERO MÁXIMO DE ÍTENS ATINGIDO                                               ';
            184: ss := 'NÚMERO DE ÍTEM NULO NÃO PERMITIDO                                             ';
            185: ss := 'MAIS QUE DUAS ALÍQUOTAS DIFERENTES NO BILHETE DE PASSAGEM NÃO PERMITIDO       ';
            186: ss := 'ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                                   ';
            187: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                   ';
            188: ss := 'CLICHE JÁ IMPRESSO                                                            ';
            189: ss := 'TEXTO OPCIONAL DO CHEQUE EXCEDEU O MÁXIMO PERMITIDO                           ';
            190: ss := 'IMPRESSÃO AUTOMÁTICA NO VERSO NÃO PERMITIDO NESTE EQUIPAMENTO                 ';
            191: ss := 'TIMEOUT NA INSERÇÃO DO CHEQUE                                                 ';
            192: ss := 'OVERFLOW NA CAPACIDADE DE TEXTO DO COMPROVANTE DE CRÉDITO OU DÉBITO           ';
            193: ss := 'PROGRAMAÇÃO DE ESPAÇOS ENTRE CUPONS MENOR QUE O MÍNIMO PERMITIDO              ';
            194: ss := 'EQUIPAMENTO NÃO POSSUI LEITOR DE CHEQUE                                       ';
            195: ss := 'PROGRAMAÇÃO DE ALÍQUOTA COM VALOR NULO NÃO PERMITIDO                          ';
            196: ss := 'PARÂMETRO BAUD RATE INVÁLIDO                                                  ';
            197: ss := 'CONFIGURAÇÃO PERMITIDA SOMENTE PELA PORTA DOS FISCO                           ';
            198: ss := 'VALOR TOTAL DO ITEM EXCEDE 11 DÍGITOS                                         ';
            199: ss := 'PROGRAMAÇÃO DA MOEDA COM ESPAÇOS EM BRACO NÃO PERMITIDO                       ';
            200: ss := 'CASAS DECIMAIS DEVEM SER PROGRAMADAS COM 2 OU 3                               ';
            201: ss := 'NÃO PERMITE CADASTRAR USUÁRIOS DIFERENTES NA MESMA MFD                        ';
            202: ss := 'IDENTIFICAÇÃO DO CONSUMIDOR NÃO PERMITIDA PARA SANGRIA OU SUPRIMENTO          ';
            203: ss := 'CASAS DECIMAIS EM QUANTIDADE MAIOR DO QUE A PERMITIDA                         ';
            204: ss := 'CASAS DECIMAIS DO UNITÁRIO MAIOR DO QUE O PERMITIDA                           ';
            205: ss := 'POSIÇÃO RESERVADA PARA ICMS                                                   ';
            206: ss := 'POSIÇÃO RESERVADA PARA ISS                                                    ';
            207: ss := 'TODAS AS ALÍQUOTAS COM A MESMA VINCULAÇÃO NÃO PERMITIDO                       ';
            208: ss := 'DATA DE EMBARQUE ANTERIOR A DATA DE EMISSÃO                                   ';
        else ;
        end;
    end;

    if ss > '' then
    begin
        if vMsg = '' then
            vMsg := ss
        else
            vMsg := vMsg + #13 + ss;
    end;

    if vMsg > '' then
        ShowMessage('Mensagem da impressora fiscal:'#13#13 +  Trim(vMsg) );



End;

procedure TForm1.StatusECF ();
var sack,St1,st2,st3: integer;
var vMsg,ss       : string;
begin
      Resposta := ECF_VerificaEstadoImpressoraMFD(sack,St1,St2,St3);
      Memo1.Lines.Add('');
      Memo1.Lines.Add('Verifica Estado Impressora:'+inttostr(Resposta));
      Memo1.Lines.Add('Estado=...ACK: '+inttostr(sack)+'...ST1: '+inttostr(St1)+'...ST2: '+inttostr(St2)+'...ST3: '+inttostr(St3));

      {
      bValor:= IntToBin(st1);

      if bvalor[25]='1' then ShowMessage('FormStatusECF.Label8.Font.Color:=clRed;');
      if bvalor[26]='1' then ShowMessage('FormStatusECF.Label9.Font.Color:=clRed;');
      if bvalor[27]='1' then ShowMessage('FormStatusECF.Label10.Font.Color:=clRed;');
      if bvalor[29]='1' then ShowMessage('FormStatusECF.Label11.Font.Color:=clRed;');
      if bvalor[30]='1' then ShowMessage('FormStatusECF.Label12.Font.Color:=clRed;');
      if bvalor[31]='1' then ShowMessage('FormStatusECF.Label13.Font.Color:=clRed;');

      bvalor:= IntToBin(St2);

      if bvalor[26]='1' then ShowMessage('FormStatusECF.Label19.Font.Color:=clRed;');
      if bvalor[27]='1' then ShowMessage('FormStatusECF.Label18.Font.Color:=clRed;');
      if bvalor[28]='1' then ShowMessage('FormStatusECF.Label17.Font.Color:=clRed;');
      if bvalor[29]='1' then ShowMessage('FormStatusECF.Label16.Font.Color:=clRed;');
      if bvalor[30]='1' then ShowMessage('FormStatusECF.Label15.Font.Color:=clRed;');
      if bvalor[31]='1' then ShowMessage('FormStatusECF.Label14.Font.Color:=clRed;');
      if bvalor[32]='1' then ShowMessage('FormStatusECF.Label21.Font.Color:=clRed;');
      }
    if (st3 >= 0) and (st3 <= 208) then
    begin
        case st3 of
            0  : ss := 'COMANDO OK                                                                    ';
            1  : ss := 'COMANDO INVÁLIDO                                                              ';
            2  : ss := 'ERRO DESCONHECIDO                                                             ';
            3  : ss := 'NÚMERO DE PARÂMETRO INVÁLIDO                                                  ';
            4  : ss := 'TIPO DE PARÂMETRO INVÁLIDO                                                    ';
            5  : ss := 'TODAS ALÍQUOTAS JÁ PROGRAMADAS                                                ';
            6  : ss := 'TOTALIZADOR NÃO FISCAL JÁ PROGRAMADO                                          ';
            7  : ss := 'CUPOM FISCAL ABERTO                                                           ';
            8  : ss := 'CUPOM FISCAL FECHADO                                                          ';
            9  : ss := 'ECF OCUPADO                                                                   ';
            10 : ss := 'IMPRESSORA EM ERRO                                                            ';
            11 : ss := 'IMPRESSORA SEM PAPEL                                                          ';
            12 : ss := 'IMPRESSORA COM CABEÇA LEVANTADA                                               ';
            13 : ss := 'IMPRESSORA OFF LINE                                                           ';
            14 : ss := 'ALÍQUOTA NÃO PROGRAMADA                                                       ';
            15 : ss := 'TERMINADOR DE STRING FALTANDO                                                 ';
            16 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE O TOTAL DO CUPOM FISCAL                       ';
            17 : ss := 'CUPOM FISCAL SEM ITEM VENDIDO                                                 ';
            18 : ss := 'COMANDO NÃO EFETIVADO                                                         ';
            19 : ss := 'SEM ESPAÇO PARA NOVAS FORMAS DE PAGAMENTO                                     ';
            20 : ss := 'FORMA DE PAGAMENTO NÃO PROGRAMADA                                             ';
            21 : ss := 'ÍNDICE MAIOR QUE NÚMERO DE FORMA DE PAGAMENTO                                 ';
            22 : ss := 'FORMAS DE PAGAMENTO ENCERRADAS                                                ';
            23 : ss := 'CUPOM NÃO TOTALIZADO                                                          ';
            24 : ss := 'COMANDO MAIOR QUE 7Fh (127d)                                                  ';
            25 : ss := 'CUPOM FISCAL ABERTO E SEM ÍTEM                                                ';
            26 : ss := 'CANCELAMENTO NÃO IMEDIATAMENTE APÓS                                           ';
            27 : ss := 'CANCELAMENTO JÁ EFETUADO                                                      ';
            28 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO OU JÁ EMITIDO                  ';
            29 : ss := 'MEIO DE PAGAMENTO NÃO PERMITE TEF                                             ';
            30 : ss := 'SEM COMPROVANTE NÃO FISCAL ABERTO                                             ';
            31 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO JÁ ABERTO                                    ';
            32 : ss := 'REIMPRESSÃO NÃO PERMITIDA                                                     ';
            33 : ss := 'COMPROVANTE NÃO FISCAL JÁ ABERTO                                              ';
            34 : ss := 'TOTALIZADOR NÃO FISCAL NÃO PROGRAMADO                                         ';
            35 : ss := 'CUPOM NÃO FISCAL SEM ÍTEM VENDIDO                                             ';
            36 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE TOTAL CNF                                      ';
            37 : ss := 'MEIO DE PAGAMENTO NÃO INDICADO                                                ';
            38 : ss := 'MEIO DE PAGAMENTO DIFERENTE DO TOTAL DO RECEBIMENTO                           ';
            39 : ss := 'NÃO PERMITIDO MAIS DE UMA SANGRIA OU SUPRIMENTO                               ';
            40 : ss := 'RELATÓRIO GERENCIAL JÁ PROGRAMADO                                             ';
            41 : ss := 'RELATÓRIO GERENCIAL NÃO PROGRAMADO                                            ';
            42 : ss := 'RELATÓRIO GERENCIAL NÃO PERMITIDO                                             ';
            43 : ss := 'MFD NÃO INICIALIZADA                                                          ';
            44 : ss := 'MFD AUSENTE                                                                   ';
            45 : ss := 'MFD SEM NÚMERO DE SÉRIE                                                       ';
            46 : ss := 'MFD JÁ INICIALIZADA                                                           ';
            47 : ss := 'MFD LOTADA                                                                    ';
            48 : ss := 'CUPOM NÃO FISCAL ABERTO                                                       ';
            49 : ss := 'MEMÓRIA FISCAL DESCONECTADA                                                   ';
            50 : ss := 'MEMÓRIA FISCAL SEM NÚMERO DE SÉRIE DA MFD                                     ';
            51 : ss := 'MEMÓRIA FISCAL LOTADA                                                         ';
            52 : ss := 'DATA INICIAL INVÁLIDA                                                         ';
            53 : ss := 'DATA FINAL INVÁLIDA                                                           ';
            54 : ss := 'CONTADOR DE REDUÇÃO Z INICIAL INVÁLIDO                                        ';
            55 : ss := 'CONTADOR DE REDUÇÃO Z FINAL INVÁLIDO                                          ';
            56 : ss := 'ERRO DE ALOCAÇÃO                                                              ';
            57 : ss := 'DADOS DO RTC INCORRETOS                                                       ';
            58 : ss := 'DATA ANTERIOR AO ÚLTIMO DOCUMENTO EMITIDO                                     ';
            59 : ss := 'FORA DE INTERVENÇÃO TÉCNICA                                                   ';
            60 : ss := 'EM INTERVENÇÃO TÉCNICA                                                        ';
            61 : ss := 'ERRO NA MEMÓRIA DE TRABALHO                                                   ';
            62 : ss := 'JÁ HOUVE MOVIMENTO NO DIA                                                     ';
            63 : ss := 'BLOQUEIO POR RZ                                                               ';
            64 : ss := 'FORMA DE PAGAMENTO ABERTA                                                     ';
            65 : ss := 'AGUARDANDO PRIMEIRO PROPRIETÁRIO                                              ';
            66 : ss := 'AGUARDANDO RZ                                                                 ';
            67 : ss := 'ECF OU LOJA IGUAL A ZERO                                                      ';
            68 : ss := 'CUPOM ADICIONAL NÃO PERMITIDO                                                 ';
            69 : ss := 'DESCONTO MAIOR QUE TOTAL VENDIDO EM ICMS                                      ';
            70 : ss := 'RECEBIMENTO NÃO FISCAL NULO NÃO PERMITIDO                                     ';
            71 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE TOTAL NÃO FISCAL                              ';
            72 : ss := 'MEMÓRIA FISCAL LOTADA PARA NOVO CARTUCHO                                      ';
            73 : ss := 'ERRO DE GRAVAÇÃO NA MF                                                        ';
            74 : ss := 'ERRO DE GRAVAÇÃO NA MFD                                                       ';
            75 : ss := 'DADOS DO RTC ANTERIORES AO ÚLTIMO DOC ARMAZENADO                              ';
            76 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR LEITURAS DA MFD                         ';
            77 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR VERSAO DO SB                            ';
            78 : ss := 'DESCRIÇÃO IGUAL A DEFAULT NÃO PERMITIDO                                       ';
            79 : ss := 'EXTRAPOLADO NÚMERO DE REPETIÇÕES PERMITIDAS                                   ';
            80 : ss := 'SEGUNDA VIA DO COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO                 ';
            81 : ss := 'PARCELAMENTO FORA DA SEQUÊNCIA                                                ';
            82 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO                                       ';
            83 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INVÁLIDA                                           ';
            84 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INCOMPLETA                                         ';
            85 : ss := 'VENDA COM VALOR NULO                                                          ';
            86 : ss := 'ESTORNO DE VALOR NULO                                                         ';
            87 : ss := 'FORMA DE PAGAMENTO DIFERENTE DO TOTAL DA SANGRIA                              ';
            88 : ss := 'REDUÇÃO NÃO PERMITIDA EM INTERVENÇÃO TÉCNICA                                  ';
            89 : ss := 'AGUARDANDO RZ PARA ENTRADA EM INTERVENÇÃO TÉCNICA                             ';
            90 : ss := 'FORMA DE PAGAMENTO COM VALOR NULO NÃO PERMITIDO                               ';
            91 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE VALOR DO ÍTEM                                  ';
            92 : ss := 'AUTENTICAÇÃO NÃO PERMITIDA                                                    ';
            93 : ss := 'TIMEOUT NA VALIDAÇÃO                                                          ';
            94 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA BILHETE DE PASSAGEM                       ';
            95 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA DE CUPOM FISCAL                           ';
            96 : ss := 'CUPOM NÃO FISCAL FECHADO                                                      ';
            97 : ss := 'PARÂMETRO NÃO ASCII EM CAMPO ASCII                                            ';
            98 : ss := 'PARÂMETRO NÃO ASCII NUMÉRICO EM CAMPO ASCII NUMÉRICO                          ';
            99 : ss := 'TIPO DE TRANSPORTE INVÁLIDO                                                   ';
            100: ss := 'DATA E HORA INVÁLIDA                                                          ';
            101: ss := 'SEM RELATÓRIO GERENCIAL OU COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO            ';
            102: ss := 'NÚMERO DO TOTALIZADOR NÃO FISCAL INVÁLIDO                                     ';
            103: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            104: ss := 'ACRÉSCIMO OU DESCONTO EM SANGRIA OU SUPRIMENTO NÃO PERMITIDO                  ';
            105: ss := 'NÚMERO DO RELATÓRIO GERENCIAL INVÁLIDO                                        ';
            106: ss := 'FORMA DE PAGAMENTO ORIGEM NÃO PROGRAMADA                                      ';
            107: ss := 'FORMA DE PAGAMENTO DESTINO NÃO PROGRAMADA                                     ';
            108: ss := 'ESTORNO MAIOR QUE FORMA PAGAMENTO                                             ';
            109: ss := 'CARACTER NUMÉRICO NA CODIFICAÇÃO GT NÃO PERMITIDO                             ';
            110: ss := 'ERRO NA INICIALIZAÇÃO DA MF                                                   ';
            111: ss := 'NOME DO TOTALIZADOR EM BRANCO NÃO PERMITIDO                                   ';
            112: ss := 'DATA E HORA ANTERIORES AO ÚLTIMO DOC ARMAZENADO                               ';
            113: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            114: ss := 'ÍTEM ANTERIOR AOS TREZENTOS ÚLTIMOS                                           ';
            115: ss := 'ÍTEM NÃO EXISTE OU JÁ CANCELADO                                               ';
            116: ss := 'CÓDIGO COM ESPAÇOS NÃO PERMITIDO                                              ';
            117: ss := 'DESCRICAO SEM CARACTER ALFABÉTICO NÃO PERMITIDO                               ';
            118: ss := 'ACRÉSCIMO MAIOR QUE VALOR DO ÍTEM                                             ';
            119: ss := 'DESCONTO MAIOR QUE VALOR DO ÍTEM                                              ';
            120: ss := 'DESCONTO EM ISS NÃO PERMITIDO                                                 ';
            121: ss := 'ACRÉSCIMO EM ÍTEM JÁ EFETUADO                                                 ';
            122: ss := 'DESCONTO EM ÍTEM JÁ EFETUADO                                                  ';
            123: ss := 'ERRO NA MEMÓRIA FISCAL CHAMAR CREDENCIADO                                     ';
            124: ss := 'AGUARDANDO GRAVAÇÃO NA MEMÓRIA FISCAL                                         ';
            125: ss := 'CARACTER REPETIDO NA CODIFICAÇÃO DO GT                                        ';
            126: ss := 'VERSÃO JÁ GRAVADA NA MEMÓRIA FISCAL                                           ';
            127: ss := 'ESTOURO DE CAPACIDADE NO CHEQUE                                               ';
            128: ss := 'TIMEOUT NA LEITURA DO CHEQUE                                                  ';
            129: ss := 'MÊS INVÁLIDO                                                                  ';
            130: ss := 'COORDENADA INVÁLIDA                                                           ';
            131: ss := 'SOBREPOSIÇÃO DE TEXTO                                                         ';
            132: ss := 'SOBREPOSIÇÃO DE TEXTO NO VALOR                                                ';
            133: ss := 'SOBREPOSIÇÃO DE TEXTO NO EXTENSO                                              ';
            134: ss := 'SOBREPOSIÇÃO DE TEXTO NO FAVORECIDO                                           ';
            135: ss := 'SOBREPOSIÇÃO DE TEXTO NA LOCALIDADE                                           ';
            136: ss := 'SOBREPOSIÇÃO DE TEXTO NO OPCIONAL                                             ';
            137: ss := 'SOBREPOSIÇÃO DE TEXTO NO DIA                                                  ';
            138: ss := 'SOBREPOSIÇÃO DE TEXTO NO MÊS                                                  ';
            139: ss := 'SOBREPOSIÇÃO DE TEXTO NO ANO                                                  ';
            140: ss := 'USANDO MFD DE OUTRO ECF                                                       ';
            141: ss := 'PRIMEIRO DADO DIFERENTE DE ESC OU 1C                                          ';
            142: ss := 'NÃO PERMITIDO ALTERAR SEM INTERVENÇÃO TÉCNICA                                 ';
            143: ss := 'DADOS DA ÚLTIMA RZ CORROMPIDOS                                                ';
            144: ss := 'COMANDO NÃO PERMITIDO NO MODO INICIALIZAÇÃO                                   ';
            145: ss := 'AGUARDANDO ACERTO DE RELÓGIO                                                  ';
            146: ss := 'MFD JÁ INICIALIZADA PARA OUTRA MF                                             ';
            147: ss := 'AGUARDANDO ACERTO DO RELÓGIO OU DESBLOQUEIO PELO TECLADO                      ';
            148: ss := 'VALOR FORMA DE PAGAMENTO MAIOR QUE MÁXIMO PERMITIDO                           ';
            149: ss := 'RAZÃO SOCIAL EM BRANCO                                                        ';
            150: ss := 'NOME DE FANTASIA EM BRANCO                                                    ';
            151: ss := 'ENDEREÇO EM BRANCO                                                            ';
            152: ss := 'ESTORNO DE CDC NÃO PERMITIDO                                                  ';
            153: ss := 'DADOS DO PROPRIETÁRIO IGUAIS AO ATUAL                                         ';
            154: ss := 'ESTORNO DE FORMA DE PAGAMENTO NÃO PERMITIDO                                   ';
            155: ss := 'DESCRIÇÃO FORMA DE PAGAMENTO IGUAL JÁ PROGRAMADA                              ';
            156: ss := 'ACERTO DE HORÁRIO DE VERÃO SÓ IMEDIATAMENTE APÓS RZ                           ';
            157: ss := 'IT NÃO PERMITIDA MF RESERVADA PARA RZ                                         ';
            158: ss := 'SENHA CNPJ INVÁLIDA                                                           ';
            159: ss := 'TIMEOUT NA INICIALIZAÇÃO DA NOVA MF                                           ';
            160: ss := 'NÃO ENCONTRADO DADOS NA MFD                                                   ';
            161: ss := 'SANGRIA OU SUPRIMENTO DEVEM SER ÚNICOS NO CNF                                 ';
            162: ss := 'ÍNDICE DA FORMA DE PAGAMENTO NULO NÃO PERMITIDO                               ';
            163: ss := 'UF DESTINO INVÁLIDA                                                           ';
            164: ss := 'TIPO DE TRANSPORTE INCOMPATÍVEL COM UF DESTINO                                ';
            165: ss := 'DESCRIÇÃO DO PRIMEIRO ÍTEM DO BILHETE DE PASSAGEM DIFERENTE DE "TARIFA"       ';
            166: ss := 'AGUARDANDO IMPRESSÃO DE CHEQUE OU AUTENTICAÇÃO                                ';
            167: ss := 'NÃO PERMITIDO PROGRAMAÇAO CNPJ IE COM ESPAÇOS EM BRANCO                       ';
            168: ss := 'NÃO PERMITIDO PROGRAMAÇÃO UF COM ESPAÇOS EM BRANCO                            ';
            169: ss := 'NÚMERO DE IMPRESSÕES DA FITA DETALHE NESTA INTERVENÇÃO TÉCNICA ESGOTADO       ';
            170: ss := 'CF JÁ SUBTOTALIZADO                                                           ';
            171: ss := 'CUPOM NÃO SUBTOTALIZADO                                                       ';
            172: ss := 'ACRÉSCIMO EM SUBTOTAL JÁ EFETUADO                                             ';
            173: ss := 'DESCONTO EM SUBTOTAL JÁ EFETUADO                                              ';
            174: ss := 'ACRÉSCIMO NULO NÃO PERMITIDO                                                  ';
            175: ss := 'DESCONTO NULO NÃO PERMITIDO                                                   ';
            176: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM SUBTOTAL NÃO PERMITIDO               ';
            177: ss := 'DATA INVÁLIDA                                                                 ';
            178: ss := 'VALOR DO CHEQUE NULO NÃO PERMITIDO                                            ';
            179: ss := 'VALOR DO CHEQUE INVÁLIDO                                                      ';
            180: ss := 'CHEQUE SEM LOCALIDADE NÃO PERMITIDO                                           ';
            181: ss := 'CANCELAMENTO ACRÉSCIMO EM ÍTEM NÃO PERMITIDO                                  ';
            182: ss := 'CANCELAMENTO DESCONTO EM ÍTEM NÃO PERMITIDO                                   ';
            183: ss := 'NÚMERO MÁXIMO DE ÍTENS ATINGIDO                                               ';
            184: ss := 'NÚMERO DE ÍTEM NULO NÃO PERMITIDO                                             ';
            185: ss := 'MAIS QUE DUAS ALÍQUOTAS DIFERENTES NO BILHETE DE PASSAGEM NÃO PERMITIDO       ';
            186: ss := 'ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                                   ';
            187: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                   ';
            188: ss := 'CLICHE JÁ IMPRESSO                                                            ';
            189: ss := 'TEXTO OPCIONAL DO CHEQUE EXCEDEU O MÁXIMO PERMITIDO                           ';
            190: ss := 'IMPRESSÃO AUTOMÁTICA NO VERSO NÃO PERMITIDO NESTE EQUIPAMENTO                 ';
            191: ss := 'TIMEOUT NA INSERÇÃO DO CHEQUE                                                 ';
            192: ss := 'OVERFLOW NA CAPACIDADE DE TEXTO DO COMPROVANTE DE CRÉDITO OU DÉBITO           ';
            193: ss := 'PROGRAMAÇÃO DE ESPAÇOS ENTRE CUPONS MENOR QUE O MÍNIMO PERMITIDO              ';
            194: ss := 'EQUIPAMENTO NÃO POSSUI LEITOR DE CHEQUE                                       ';
            195: ss := 'PROGRAMAÇÃO DE ALÍQUOTA COM VALOR NULO NÃO PERMITIDO                          ';
            196: ss := 'PARÂMETRO BAUD RATE INVÁLIDO                                                  ';
            197: ss := 'CONFIGURAÇÃO PERMITIDA SOMENTE PELA PORTA DOS FISCO                           ';
            198: ss := 'VALOR TOTAL DO ITEM EXCEDE 11 DÍGITOS                                         ';
            199: ss := 'PROGRAMAÇÃO DA MOEDA COM ESPAÇOS EM BRACO NÃO PERMITIDO                       ';
            200: ss := 'CASAS DECIMAIS DEVEM SER PROGRAMADAS COM 2 OU 3                               ';
            201: ss := 'NÃO PERMITE CADASTRAR USUÁRIOS DIFERENTES NA MESMA MFD                        ';
            202: ss := 'IDENTIFICAÇÃO DO CONSUMIDOR NÃO PERMITIDA PARA SANGRIA OU SUPRIMENTO          ';
            203: ss := 'CASAS DECIMAIS EM QUANTIDADE MAIOR DO QUE A PERMITIDA                         ';
            204: ss := 'CASAS DECIMAIS DO UNITÁRIO MAIOR DO QUE O PERMITIDA                           ';
            205: ss := 'POSIÇÃO RESERVADA PARA ICMS                                                   ';
            206: ss := 'POSIÇÃO RESERVADA PARA ISS                                                    ';
            207: ss := 'TODAS AS ALÍQUOTAS COM A MESMA VINCULAÇÃO NÃO PERMITIDO                       ';
            208: ss := 'DATA DE EMBARQUE ANTERIOR A DATA DE EMISSÃO                                   ';
        else ;
        end;
    end;

    if ss > '' then
    begin
        if vMsg = '' then
            vMsg := ss
        else
            vMsg := vMsg + #13 + ss;
    end;

    if vMsg > '' then
        ShowMessage('Mensagem da impressora fiscal:'#13#13 +  Trim(vMsg) );



End;

procedure TForm1.BtFecharClick(Sender: TObject);
begin
        Close;
end;



procedure TForm1.btnECF_AbreCupomMFDClick(Sender: TObject);

begin
    Resposta:=0;

    Resposta:= ECF_AbreCupomMFD( '','','');
    Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_VendeItem( '000001', 'Produto 01 ','F','F', '0002100', 2,  '1.00', '', '' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    ShowMessage('DESLIGUE A IMPRESSORA!');

    Memo1.Lines.Add('INICIA FECHAMENTO DE CUPOM');
    Resposta := ECF_IniciaFechamentoCupom('D','$','0,50');
    Memo1.Lines.Add('ECF_IniciaFechamento:'+inttostr(Resposta));
    Memo1.Lines.Add('INICIA FECHAMENTO DE CUPOM');
    
    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta := ECF_EfetuaFormaPagamentoMFD(edtMeioPagamento.Text,'100,00','10','Pagamento com 10 parcelas');
    Memo1.Lines.Add('ECF_EfetuaFormaPagamentoMFD:'+inttostr(Resposta));
    Memo1.Lines.Add('');

        If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta := ECF_TerminaFechamentoCupom('');
    Memo1.Lines.Add('ECF_TerminaFechamentoCupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

        If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.edtECF_AbrePortaSerialClick(Sender: TObject);
var FormasPagamentos, cVersao: String;
i,s: Integer;
begin
 Resposta:=0;
 Resposta:= ECF_AbrePortaSerial();
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Abrir Porta:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:=0;
 for i := 1 to 9 do cVersao := cVersao + ' '; 
 Resposta:= ECF_VersaoDll(cVersao);
 Form1.Caption:= (Form1.Caption)+' - Utilizando a DLL de versão:'+ StringReplace(cVersao,',','.',[rfReplaceAll,rfIgnoreCase]);
 {
 if Resposta > 0 then
 ShowMessage('ABERTURA DA PORTA OK!: '+InttoStr(Resposta))
 else
 ShowMessage('FALHA DA ABERTURA DA PORTA SERIAL!: '+InttoStr(Resposta));
 }
  for i := 1 to 919 do
    FormasPagamentos := FormasPagamentos + ' ';
  ECF_VerificaFormasPagamentoMFD(Pchar(FormasPagamentos));
  s:=1;
  for i:=1 to 20 do
  begin
    if Length(Trim(Copy(FormasPagamentos, s, 16))) > 1 then
      edtMeioPagamento.AddItem(Trim(Copy(FormasPagamentos, s, 16)),edtMeioPagamento);
    s:=s+46;
  end;
  edtMeioPagamento.ItemIndex:=0;



 end;

procedure TForm1.Button2Click(Sender: TObject);
var
//cLinhas: String;
i: integer;
begin
        Resposta:=0;
        Resposta:= ECF_AbreCupomMFD('357.688.968-05','Fellipe Kennedy Silva Leal','Rua Juzarte Lopes,01');
        Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));
        Resposta:= ECF_VendeItem( '000001', 'Produto 01','II','I', '1', 2,  '0.01', '$', '0' );
        Resposta := ECF_EfetuaFormaPagamentoMFD(edtMeioPagamento.Text,'0.01','10','Pagamento efetuado!');
        Memo1.Lines.Add('ECF_EfetuaFormaPagamentoMFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');
        Resposta := ECF_TerminaFechamentoCupom('');
        Memo1.Lines.Add('ECF_TerminaFechamentoCupom:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Exit;
        end;
        Resposta:= ECF_AbreComprovanteNaoFiscalVinculado(edtMeioPagamento.Text, '0.01', '0000');
        Memo1.Lines.Add('Abrir TEF:'+inttostr(Resposta));
        //form2.showmodal;
        //cLinhas := form2.Memo1.Text;

        for i:=1 to 1 do begin
        Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar('              COMPROVANTE DE VENDAS'+#10+#13+'Cliente : TSC ENGENHARIA LTDA   '+#10+#13+'Caixa : TURNO1'+#10+#13+'Descricao                       V.Unit.   Quant.'+#10+#13+'Desconto Item    Acrescimo Item            Valor'+#10+#13+'------------------------------------------------'+#10+#13+'GASOLINA COMUM                  2,590     3,475'+#10+#13+'        0,000             0,000            9,000'+#10+#13+'------------------------------------------------'+#10+#13+'($) Soma                                    9,00'+#10+#13+'------------------------------------------------'+#10+#13+'NOTA A PRAZO                                9,00'+#10+#13+'------------------------------------------------'+#10+#13+'169-TSC ENGENH'));
        Memo1.Lines.Add('Impressão de texto:'+inttostr(Resposta));

            If Resposta > 0 then
            else
                RetornoECF();
            end;

        Resposta:= ECF_FechaComprovanteNaoFiscalVinculado();
        Memo1.Lines.Add('Fechar TEF:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        if Application.MessageBox('Deseja imprimir segunda via?','',MB_YESNO) = idyes then
        begin
                Resposta:=ECF_SegundaViaNaoFiscalVinculadoMFD();
                Memo1.Lines.Add('Segunda Via: '+inttostr(Resposta));
                Memo1.Lines.Add('');
        end;

        Resposta:= ECF_EstornoNaoFiscalVinculadoMFD('357.688.968-05','Fellipe Kennedy Silva Leal','Rua Juzarte Lopes,01');
        Memo1.Lines.Add('Fechar TEF:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        for i:=1 to 1 do begin
        Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar('              COMPROVANTE DE VENDAS'+#10+#13+'Cliente : TSC ENGENHARIA LTDA   '+#10+#13+'Caixa : TURNO1'+#10+#13+'Descricao                       V.Unit.   Quant.'+#10+#13+'Desconto Item    Acrescimo Item            Valor'+#10+#13+'------------------------------------------------'+#10+#13+'GASOLINA COMUM                  2,590     3,475'+#10+#13+'        0,000             0,000            9,000'+#10+#13+'------------------------------------------------'+#10+#13+'($) Soma                                    9,00'+#10+#13+'------------------------------------------------'+#10+#13+'NOTA A PRAZO                                9,00'+#10+#13+'------------------------------------------------'+#10+#13+'169-TSC ENGENH'));
        Memo1.Lines.Add('Impressão de texto:'+inttostr(Resposta));

            If Resposta > 0 then
            else
                RetornoECF();
            end;

        Resposta:= ECF_FechaComprovanteNaoFiscalVinculado();
        Memo1.Lines.Add('Fechar TEF:'+inttostr(Resposta));
        Memo1.Lines.Add('');

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
        Resposta:= ECF_LeituraX;
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Leitura X:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 Resposta:=0;
 Resposta:= ECF_FechaPortaSerial();
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Fechar Porta:'+inttostr(Resposta));
 Memo1.Lines.Add('');

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
        Resposta:= ECF_CancelaCupom;
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.Button7Click(Sender: TObject);
var
cData, cHora: String;
Zpend: string;
begin

SetLength (Zpend,1);
Resposta:= ECF_VerificaZPendente(Zpend);
Memo1.Lines.Add('');
Memo1.Lines.Add('ECF_VerificaZPendente'+inttostr(Resposta));
Memo1.Lines.Add('Redução Z pendente:'+Zpend);
Memo1.Lines.Add('');

        if Zpend = '1' then
                begin
                cData:=FormatDateTime('dd/mm/yy', Date);
                cHora:=FormatDateTime('hh:MM:ss', Time);
                Resposta:= ECF_ReducaoZ(pchar(cData), pchar(cHora));
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Redução Z:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                RetornoECF();
                end
        else if Zpend = '0' then
        if Application.MessageBox('Ao imprimir a redução Z, será fechado o dia de hoje, deseja continuar?','',MB_YESNO) = idyes then
        begin
        cData:=FormatDateTime('dd/mm/yy', Date);
        cHora:=FormatDateTime('hh:MM:ss', Time);
        Resposta:= ECF_ReducaoZ(pchar(cData), pchar(cHora));
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Redução Z:'+inttostr(Resposta));
        Memo1.Lines.Add('');
        RetornoECF();
        end

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        Resposta:=0;
        Resposta:= ECF_FechaPortaSerial();
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Fechar Porta:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.Button8Click(Sender: TObject);
var
cLinhas: String;
status: array[0..1] of char;
datahora: array[0..12] of char;
begin
        Resposta:=0;
        Resposta:= ECF_StatusRelatorioGerencial(status);
        Memo1.Lines.Add('Status Relatorio GErencial:'+inttostr(Resposta));
        Memo1.Lines.Add('Status ='+strPas(Status));

        Resposta:=0;
        Resposta:= ECF_DataHoraUltimoDocumentoMFD(datahora);
        Memo1.Lines.Add('Status ='+strPas(datahora));

        Resposta:= ECF_AbreRelatorioGerencial();
        Memo1.Lines.Add('Abrir Relatorio Gerencial (TEF):'+inttostr(Resposta));

          Resposta:=0;
        Resposta:= ECF_DataHoraUltimoDocumentoMFD(datahora);
        Memo1.Lines.Add('Status ='+strPas(datahora));
        
        If Resposta > 0 then
          StatusECF ()
        else
          RetornoECF();

        //form2.showmodal;
        //cLinhas := form2.Memo1.Text;
        Resposta:= ECF_UsaRelatorioGerencialMFD('Teste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do textoTeste do texto');
        If Resposta > 0 then
          StatusECF ()
        else
          RetornoECF();

        Resposta := ECF_AtivaDesativaCorteProximoMFD(1);

        Resposta:= ECF_UsaRelatorioGerencialMFD('Texto com chr10 + chr 16:'+#10+'SEPARADO'#16+'V'+'TESTE2'+#13);

        If Resposta > 0 then
          StatusECF ()
        else
          RetornoECF();

        //Memo1.Lines.Add('Impressão de texto:'+inttostr(Resposta));
        Resposta:= ECF_FechaRelatorioGerencial();
        Memo1.Lines.Add('Fechar Relatorio Gerencial (TEF):'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Resposta:= ECF_DataHoraUltimoDocumentoMFD(datahora);
        Memo1.Lines.Add('Status ='+strPas(datahora));

        If Resposta > 0 then
          StatusECF ()
        else
          RetornoECF();
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
        Resposta:=0;
        Resposta := ECF_CapturaDocumentos('1','0001','0010','LMF.TXT','0');
        Memo1.Lines.Add('');
        Memo1.Lines.Add('CapturaDocumentos:'+inttostr(Resposta));
        Memo1.Lines.Add('');

end;

procedure TForm1.Button10Click(Sender: TObject);
begin
        Resposta:=0;
        Resposta := ECF_EnviarLogotipoCliche(pchar('c:\sweda\sw-pbn.bmp'));
        Memo1.Lines.Add('');
        Memo1.Lines.Add('EnviarLogotipo:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.Button11Click(Sender: TObject);
var tipoecf: array[0..1] of char;
    ncaixa: array[0..4] of char;
begin
        Resposta:=0; tipoecf:=''; ncaixa:='';
        Resposta := ECF_RetornaTipoEcf(Tipoecf);
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Retorna Tipo ECF:'+inttostr(Resposta));
        Memo1.Lines.Add('TIPO='+tipoecf);

        Resposta := ECF_NumeroCaixa(NCaixa);
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Retorna NumeroCaixa:'+inttostr(Resposta));
        Memo1.Lines.Add('Caixa='+Ncaixa);
end;

procedure TForm1.Button12Click(Sender: TObject);
var ModoOp: array[0..1] of char;
begin
        Resposta := ECF_VerificaModoOperacao(ModoOp);
        Memo1.Lines.Add('');
        Memo1.Lines.Add('VerificaModo Operação:'+inttostr(Resposta));
        if ModoOp[0]='1' then Memo1.Lines.Add('Modo='+ModoOp+'-Modo Normal')
        else if ModoOp[0]='0' then Memo1.Lines.Add('Modo='+ModoOp+'-Modo Intervenção Técnica');

end;

procedure TForm1.Button13Click(Sender: TObject);
begin
        Resposta := ECF_ProgramarParametrosDiversos('001','0001','S','3','N');
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Programa Parâmetros Diversos:'+inttostr(Resposta));

end;

procedure TForm1.Button14Click(Sender: TObject);
begin
        Resposta := ECF_NomeiaRelatorioGerencialMFD('2','NOVO RELATORIO');
        Memo1.Lines.Add('');
        Memo1.Lines.Add('NomeiaRelatorioGerencialMFD:'+inttostr(Resposta));


end;

procedure TForm1.Button15Click(Sender: TObject);
var sack,St1,st2,st3: integer;
var vMsg, ss       : string;
begin
      Resposta := ECF_VerificaEstadoImpressoraMFD(sack,St1,St2,St3);
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Verifica Estado Impressora:'+inttostr(Resposta));
        Memo1.Lines.Add('Estado=...ACK: '+inttostr(sack)+'...ST1: '+inttostr(St1)+'...ST2: '+inttostr(St2)+'...ST3: '+inttostr(St3));

    vMsg := '';
    ss   := '';

    if (st3 >= 0) and (st3 <= 208) then
    begin
        case st3 of
            0  : ss := 'COMANDO OK                                                                    ';
            1  : ss := 'COMANDO INVÁLIDO                                                              ';
            2  : ss := 'ERRO DESCONHECIDO                                                             ';
            3  : ss := 'NÚMERO DE PARÂMETRO INVÁLIDO                                                  ';
            4  : ss := 'TIPO DE PARÂMETRO INVÁLIDO                                                    ';
            5  : ss := 'TODAS ALÍQUOTAS JÁ PROGRAMADAS                                                ';
            6  : ss := 'TOTALIZADOR NÃO FISCAL JÁ PROGRAMADO                                          ';
            7  : ss := 'CUPOM FISCAL ABERTO                                                           ';
            8  : ss := 'CUPOM FISCAL FECHADO                                                          ';
            9  : ss := 'ECF OCUPADO                                                                   ';
            10 : ss := 'IMPRESSORA EM ERRO                                                            ';
            11 : ss := 'IMPRESSORA SEM PAPEL                                                          ';
            12 : ss := 'IMPRESSORA COM CABEÇA LEVANTADA                                               ';
            13 : ss := 'IMPRESSORA OFF LINE                                                           ';
            14 : ss := 'ALÍQUOTA NÃO PROGRAMADA                                                       ';
            15 : ss := 'TERMINADOR DE STRING FALTANDO                                                 ';
            16 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE O TOTAL DO CUPOM FISCAL                       ';
            17 : ss := 'CUPOM FISCAL SEM ITEM VENDIDO                                                 ';
            18 : ss := 'COMANDO NÃO EFETIVADO                                                         ';
            19 : ss := 'SEM ESPAÇO PARA NOVAS FORMAS DE PAGAMENTO                                     ';
            20 : ss := 'FORMA DE PAGAMENTO NÃO PROGRAMADA                                             ';
            21 : ss := 'ÍNDICE MAIOR QUE NÚMERO DE FORMA DE PAGAMENTO                                 ';
            22 : ss := 'FORMAS DE PAGAMENTO ENCERRADAS                                                ';
            23 : ss := 'CUPOM NÃO TOTALIZADO                                                          ';
            24 : ss := 'COMANDO MAIOR QUE 7Fh (127d)                                                  ';
            25 : ss := 'CUPOM FISCAL ABERTO E SEM ÍTEM                                                ';
            26 : ss := 'CANCELAMENTO NÃO IMEDIATAMENTE APÓS                                           ';
            27 : ss := 'CANCELAMENTO JÁ EFETUADO                                                      ';
            28 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO OU JÁ EMITIDO                  ';
            29 : ss := 'MEIO DE PAGAMENTO NÃO PERMITE TEF                                             ';
            30 : ss := 'SEM COMPROVANTE NÃO FISCAL ABERTO                                             ';
            31 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO JÁ ABERTO                                    ';
            32 : ss := 'REIMPRESSÃO NÃO PERMITIDA                                                     ';
            33 : ss := 'COMPROVANTE NÃO FISCAL JÁ ABERTO                                              ';
            34 : ss := 'TOTALIZADOR NÃO FISCAL NÃO PROGRAMADO                                         ';
            35 : ss := 'CUPOM NÃO FISCAL SEM ÍTEM VENDIDO                                             ';
            36 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE TOTAL CNF                                      ';
            37 : ss := 'MEIO DE PAGAMENTO NÃO INDICADO                                                ';
            38 : ss := 'MEIO DE PAGAMENTO DIFERENTE DO TOTAL DO RECEBIMENTO                           ';
            39 : ss := 'NÃO PERMITIDO MAIS DE UMA SANGRIA OU SUPRIMENTO                               ';
            40 : ss := 'RELATÓRIO GERENCIAL JÁ PROGRAMADO                                             ';
            41 : ss := 'RELATÓRIO GERENCIAL NÃO PROGRAMADO                                            ';
            42 : ss := 'RELATÓRIO GERENCIAL NÃO PERMITIDO                                             ';
            43 : ss := 'MFD NÃO INICIALIZADA                                                          ';
            44 : ss := 'MFD AUSENTE                                                                   ';
            45 : ss := 'MFD SEM NÚMERO DE SÉRIE                                                       ';
            46 : ss := 'MFD JÁ INICIALIZADA                                                           ';
            47 : ss := 'MFD LOTADA                                                                    ';
            48 : ss := 'CUPOM NÃO FISCAL ABERTO                                                       ';
            49 : ss := 'MEMÓRIA FISCAL DESCONECTADA                                                   ';
            50 : ss := 'MEMÓRIA FISCAL SEM NÚMERO DE SÉRIE DA MFD                                     ';
            51 : ss := 'MEMÓRIA FISCAL LOTADA                                                         ';
            52 : ss := 'DATA INICIAL INVÁLIDA                                                         ';
            53 : ss := 'DATA FINAL INVÁLIDA                                                           ';
            54 : ss := 'CONTADOR DE REDUÇÃO Z INICIAL INVÁLIDO                                        ';
            55 : ss := 'CONTADOR DE REDUÇÃO Z FINAL INVÁLIDO                                          ';
            56 : ss := 'ERRO DE ALOCAÇÃO                                                              ';
            57 : ss := 'DADOS DO RTC INCORRETOS                                                       ';
            58 : ss := 'DATA ANTERIOR AO ÚLTIMO DOCUMENTO EMITIDO                                     ';
            59 : ss := 'FORA DE INTERVENÇÃO TÉCNICA                                                   ';
            60 : ss := 'EM INTERVENÇÃO TÉCNICA                                                        ';
            61 : ss := 'ERRO NA MEMÓRIA DE TRABALHO                                                   ';
            62 : ss := 'JÁ HOUVE MOVIMENTO NO DIA                                                     ';
            63 : ss := 'BLOQUEIO POR RZ                                                               ';
            64 : ss := 'FORMA DE PAGAMENTO ABERTA                                                     ';
            65 : ss := 'AGUARDANDO PRIMEIRO PROPRIETÁRIO                                              ';
            66 : ss := 'AGUARDANDO RZ                                                                 ';
            67 : ss := 'ECF OU LOJA IGUAL A ZERO                                                      ';
            68 : ss := 'CUPOM ADICIONAL NÃO PERMITIDO                                                 ';
            69 : ss := 'DESCONTO MAIOR QUE TOTAL VENDIDO EM ICMS                                      ';
            70 : ss := 'RECEBIMENTO NÃO FISCAL NULO NÃO PERMITIDO                                     ';
            71 : ss := 'ACRÉSCIMO OU DESCONTO MAIOR QUE TOTAL NÃO FISCAL                              ';
            72 : ss := 'MEMÓRIA FISCAL LOTADA PARA NOVO CARTUCHO                                      ';
            73 : ss := 'ERRO DE GRAVAÇÃO NA MF                                                        ';
            74 : ss := 'ERRO DE GRAVAÇÃO NA MFD                                                       ';
            75 : ss := 'DADOS DO RTC ANTERIORES AO ÚLTIMO DOC ARMAZENADO                              ';
            76 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR LEITURAS DA MFD                         ';
            77 : ss := 'MEMÓRIA FISCAL SEM ESPAÇO PARA GRAVAR VERSAO DO SB                            ';
            78 : ss := 'DESCRIÇÃO IGUAL A DEFAULT NÃO PERMITIDO                                       ';
            79 : ss := 'EXTRAPOLADO NÚMERO DE REPETIÇÕES PERMITIDAS                                   ';
            80 : ss := 'SEGUNDA VIA DO COMPROVANTE DE CRÉDITO OU DÉBITO NÃO PERMITIDO                 ';
            81 : ss := 'PARCELAMENTO FORA DA SEQUÊNCIA                                                ';
            82 : ss := 'COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO                                       ';
            83 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INVÁLIDA                                           ';
            84 : ss := 'TEXTO COM SEQUÊNCIA DE ESC INCOMPLETA                                         ';
            85 : ss := 'VENDA COM VALOR NULO                                                          ';
            86 : ss := 'ESTORNO DE VALOR NULO                                                         ';
            87 : ss := 'FORMA DE PAGAMENTO DIFERENTE DO TOTAL DA SANGRIA                              ';
            88 : ss := 'REDUÇÃO NÃO PERMITIDA EM INTERVENÇÃO TÉCNICA                                  ';
            89 : ss := 'AGUARDANDO RZ PARA ENTRADA EM INTERVENÇÃO TÉCNICA                             ';
            90 : ss := 'FORMA DE PAGAMENTO COM VALOR NULO NÃO PERMITIDO                               ';
            91 : ss := 'ACRÉSCIMO E DESCONTO MAIOR QUE VALOR DO ÍTEM                                  ';
            92 : ss := 'AUTENTICAÇÃO NÃO PERMITIDA                                                    ';
            93 : ss := 'TIMEOUT NA VALIDAÇÃO                                                          ';
            94 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA BILHETE DE PASSAGEM                       ';
            95 : ss := 'COMANDO NÃO EXECUTADO EM IMPRESSORA DE CUPOM FISCAL                           ';
            96 : ss := 'CUPOM NÃO FISCAL FECHADO                                                      ';
            97 : ss := 'PARÂMETRO NÃO ASCII EM CAMPO ASCII                                            ';
            98 : ss := 'PARÂMETRO NÃO ASCII NUMÉRICO EM CAMPO ASCII NUMÉRICO                          ';
            99 : ss := 'TIPO DE TRANSPORTE INVÁLIDO                                                   ';
            100: ss := 'DATA E HORA INVÁLIDA                                                          ';
            101: ss := 'SEM RELATÓRIO GERENCIAL OU COMPROVANTE DE CRÉDITO OU DÉBITO ABERTO            ';
            102: ss := 'NÚMERO DO TOTALIZADOR NÃO FISCAL INVÁLIDO                                     ';
            103: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            104: ss := 'ACRÉSCIMO OU DESCONTO EM SANGRIA OU SUPRIMENTO NÃO PERMITIDO                  ';
            105: ss := 'NÚMERO DO RELATÓRIO GERENCIAL INVÁLIDO                                        ';
            106: ss := 'FORMA DE PAGAMENTO ORIGEM NÃO PROGRAMADA                                      ';
            107: ss := 'FORMA DE PAGAMENTO DESTINO NÃO PROGRAMADA                                     ';
            108: ss := 'ESTORNO MAIOR QUE FORMA PAGAMENTO                                             ';
            109: ss := 'CARACTER NUMÉRICO NA CODIFICAÇÃO GT NÃO PERMITIDO                             ';
            110: ss := 'ERRO NA INICIALIZAÇÃO DA MF                                                   ';
            111: ss := 'NOME DO TOTALIZADOR EM BRANCO NÃO PERMITIDO                                   ';
            112: ss := 'DATA E HORA ANTERIORES AO ÚLTIMO DOC ARMAZENADO                               ';
            113: ss := 'PARÂMETRO DE ACRÉSCIMO OU DESCONTO INVÁLIDO                                   ';
            114: ss := 'ÍTEM ANTERIOR AOS TREZENTOS ÚLTIMOS                                           ';
            115: ss := 'ÍTEM NÃO EXISTE OU JÁ CANCELADO                                               ';
            116: ss := 'CÓDIGO COM ESPAÇOS NÃO PERMITIDO                                              ';
            117: ss := 'DESCRICAO SEM CARACTER ALFABÉTICO NÃO PERMITIDO                               ';
            118: ss := 'ACRÉSCIMO MAIOR QUE VALOR DO ÍTEM                                             ';
            119: ss := 'DESCONTO MAIOR QUE VALOR DO ÍTEM                                              ';
            120: ss := 'DESCONTO EM ISS NÃO PERMITIDO                                                 ';
            121: ss := 'ACRÉSCIMO EM ÍTEM JÁ EFETUADO                                                 ';
            122: ss := 'DESCONTO EM ÍTEM JÁ EFETUADO                                                  ';
            123: ss := 'ERRO NA MEMÓRIA FISCAL CHAMAR CREDENCIADO                                     ';
            124: ss := 'AGUARDANDO GRAVAÇÃO NA MEMÓRIA FISCAL                                         ';
            125: ss := 'CARACTER REPETIDO NA CODIFICAÇÃO DO GT                                        ';
            126: ss := 'VERSÃO JÁ GRAVADA NA MEMÓRIA FISCAL                                           ';
            127: ss := 'ESTOURO DE CAPACIDADE NO CHEQUE                                               ';
            128: ss := 'TIMEOUT NA LEITURA DO CHEQUE                                                  ';
            129: ss := 'MÊS INVÁLIDO                                                                  ';
            130: ss := 'COORDENADA INVÁLIDA                                                           ';
            131: ss := 'SOBREPOSIÇÃO DE TEXTO                                                         ';
            132: ss := 'SOBREPOSIÇÃO DE TEXTO NO VALOR                                                ';
            133: ss := 'SOBREPOSIÇÃO DE TEXTO NO EXTENSO                                              ';
            134: ss := 'SOBREPOSIÇÃO DE TEXTO NO FAVORECIDO                                           ';
            135: ss := 'SOBREPOSIÇÃO DE TEXTO NA LOCALIDADE                                           ';
            136: ss := 'SOBREPOSIÇÃO DE TEXTO NO OPCIONAL                                             ';
            137: ss := 'SOBREPOSIÇÃO DE TEXTO NO DIA                                                  ';
            138: ss := 'SOBREPOSIÇÃO DE TEXTO NO MÊS                                                  ';
            139: ss := 'SOBREPOSIÇÃO DE TEXTO NO ANO                                                  ';
            140: ss := 'USANDO MFD DE OUTRO ECF                                                       ';
            141: ss := 'PRIMEIRO DADO DIFERENTE DE ESC OU 1C                                          ';
            142: ss := 'NÃO PERMITIDO ALTERAR SEM INTERVENÇÃO TÉCNICA                                 ';
            143: ss := 'DADOS DA ÚLTIMA RZ CORROMPIDOS                                                ';
            144: ss := 'COMANDO NÃO PERMITIDO NO MODO INICIALIZAÇÃO                                   ';
            145: ss := 'AGUARDANDO ACERTO DE RELÓGIO                                                  ';
            146: ss := 'MFD JÁ INICIALIZADA PARA OUTRA MF                                             ';
            147: ss := 'AGUARDANDO ACERTO DO RELÓGIO OU DESBLOQUEIO PELO TECLADO                      ';
            148: ss := 'VALOR FORMA DE PAGAMENTO MAIOR QUE MÁXIMO PERMITIDO                           ';
            149: ss := 'RAZÃO SOCIAL EM BRANCO                                                        ';
            150: ss := 'NOME DE FANTASIA EM BRANCO                                                    ';
            151: ss := 'ENDEREÇO EM BRANCO                                                            ';
            152: ss := 'ESTORNO DE CDC NÃO PERMITIDO                                                  ';
            153: ss := 'DADOS DO PROPRIETÁRIO IGUAIS AO ATUAL                                         ';
            154: ss := 'ESTORNO DE FORMA DE PAGAMENTO NÃO PERMITIDO                                   ';
            155: ss := 'DESCRIÇÃO FORMA DE PAGAMENTO IGUAL JÁ PROGRAMADA                              ';
            156: ss := 'ACERTO DE HORÁRIO DE VERÃO SÓ IMEDIATAMENTE APÓS RZ                           ';
            157: ss := 'IT NÃO PERMITIDA MF RESERVADA PARA RZ                                         ';
            158: ss := 'SENHA CNPJ INVÁLIDA                                                           ';
            159: ss := 'TIMEOUT NA INICIALIZAÇÃO DA NOVA MF                                           ';
            160: ss := 'NÃO ENCONTRADO DADOS NA MFD                                                   ';
            161: ss := 'SANGRIA OU SUPRIMENTO DEVEM SER ÚNICOS NO CNF                                 ';
            162: ss := 'ÍNDICE DA FORMA DE PAGAMENTO NULO NÃO PERMITIDO                               ';
            163: ss := 'UF DESTINO INVÁLIDA                                                           ';
            164: ss := 'TIPO DE TRANSPORTE INCOMPATÍVEL COM UF DESTINO                                ';
            165: ss := 'DESCRIÇÃO DO PRIMEIRO ÍTEM DO BILHETE DE PASSAGEM DIFERENTE DE "TARIFA"       ';
            166: ss := 'AGUARDANDO IMPRESSÃO DE CHEQUE OU AUTENTICAÇÃO                                ';
            167: ss := 'NÃO PERMITIDO PROGRAMAÇAO CNPJ IE COM ESPAÇOS EM BRANCO                       ';
            168: ss := 'NÃO PERMITIDO PROGRAMAÇÃO UF COM ESPAÇOS EM BRANCO                            ';
            169: ss := 'NÚMERO DE IMPRESSÕES DA FITA DETALHE NESTA INTERVENÇÃO TÉCNICA ESGOTADO       ';
            170: ss := 'CF JÁ SUBTOTALIZADO                                                           ';
            171: ss := 'CUPOM NÃO SUBTOTALIZADO                                                       ';
            172: ss := 'ACRÉSCIMO EM SUBTOTAL JÁ EFETUADO                                             ';
            173: ss := 'DESCONTO EM SUBTOTAL JÁ EFETUADO                                              ';
            174: ss := 'ACRÉSCIMO NULO NÃO PERMITIDO                                                  ';
            175: ss := 'DESCONTO NULO NÃO PERMITIDO                                                   ';
            176: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM SUBTOTAL NÃO PERMITIDO               ';
            177: ss := 'DATA INVÁLIDA                                                                 ';
            178: ss := 'VALOR DO CHEQUE NULO NÃO PERMITIDO                                            ';
            179: ss := 'VALOR DO CHEQUE INVÁLIDO                                                      ';
            180: ss := 'CHEQUE SEM LOCALIDADE NÃO PERMITIDO                                           ';
            181: ss := 'CANCELAMENTO ACRÉSCIMO EM ÍTEM NÃO PERMITIDO                                  ';
            182: ss := 'CANCELAMENTO DESCONTO EM ÍTEM NÃO PERMITIDO                                   ';
            183: ss := 'NÚMERO MÁXIMO DE ÍTENS ATINGIDO                                               ';
            184: ss := 'NÚMERO DE ÍTEM NULO NÃO PERMITIDO                                             ';
            185: ss := 'MAIS QUE DUAS ALÍQUOTAS DIFERENTES NO BILHETE DE PASSAGEM NÃO PERMITIDO       ';
            186: ss := 'ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                                   ';
            187: ss := 'CANCELAMENTO DE ACRÉSCIMO OU DESCONTO EM ITEM NÃO PERMITIDO                   ';
            188: ss := 'CLICHE JÁ IMPRESSO                                                            ';
            189: ss := 'TEXTO OPCIONAL DO CHEQUE EXCEDEU O MÁXIMO PERMITIDO                           ';
            190: ss := 'IMPRESSÃO AUTOMÁTICA NO VERSO NÃO PERMITIDO NESTE EQUIPAMENTO                 ';
            191: ss := 'TIMEOUT NA INSERÇÃO DO CHEQUE                                                 ';
            192: ss := 'OVERFLOW NA CAPACIDADE DE TEXTO DO COMPROVANTE DE CRÉDITO OU DÉBITO           ';
            193: ss := 'PROGRAMAÇÃO DE ESPAÇOS ENTRE CUPONS MENOR QUE O MÍNIMO PERMITIDO              ';
            194: ss := 'EQUIPAMENTO NÃO POSSUI LEITOR DE CHEQUE                                       ';
            195: ss := 'PROGRAMAÇÃO DE ALÍQUOTA COM VALOR NULO NÃO PERMITIDO                          ';
            196: ss := 'PARÂMETRO BAUD RATE INVÁLIDO                                                  ';
            197: ss := 'CONFIGURAÇÃO PERMITIDA SOMENTE PELA PORTA DOS FISCO                           ';
            198: ss := 'VALOR TOTAL DO ITEM EXCEDE 11 DÍGITOS                                         ';
            199: ss := 'PROGRAMAÇÃO DA MOEDA COM ESPAÇOS EM BRACO NÃO PERMITIDO                       ';
            200: ss := 'CASAS DECIMAIS DEVEM SER PROGRAMADAS COM 2 OU 3                               ';
            201: ss := 'NÃO PERMITE CADASTRAR USUÁRIOS DIFERENTES NA MESMA MFD                        ';
            202: ss := 'IDENTIFICAÇÃO DO CONSUMIDOR NÃO PERMITIDA PARA SANGRIA OU SUPRIMENTO          ';
            203: ss := 'CASAS DECIMAIS EM QUANTIDADE MAIOR DO QUE A PERMITIDA                         ';
            204: ss := 'CASAS DECIMAIS DO UNITÁRIO MAIOR DO QUE O PERMITIDA                           ';
            205: ss := 'POSIÇÃO RESERVADA PARA ICMS                                                   ';
            206: ss := 'POSIÇÃO RESERVADA PARA ISS                                                    ';
            207: ss := 'TODAS AS ALÍQUOTAS COM A MESMA VINCULAÇÃO NÃO PERMITIDO                       ';
            208: ss := 'DATA DE EMBARQUE ANTERIOR A DATA DE EMISSÃO                                   ';
        else ;
        end;
    end;

    if ss > '' then
    begin
        if vMsg = '' then
            vMsg := ss
        else
            vMsg := vMsg + #13 + ss;
    end;

    if vMsg > '' then
        ShowMessage('Mensagem da impressora fiscal:'#13#13 +  Trim(vMsg) );

end;


procedure TForm1.Button16Click(Sender: TObject);
begin
      Resposta := ECF_AtivaDesativaCorteProximoMFD(1);
      Memo1.Lines.Add('');
      Memo1.Lines.Add('Ativa Desativa Corte:'+inttostr(Resposta));
end;

procedure TForm1.Button17Click(Sender: TObject);
var  totalc: array[0..24] of char;
     //totals:string;
begin
    Resposta:=0;

    Resposta:= ECF_AbreCupomMFD( '11.222.333-45','Fulano de Tal','Rua X, 1234');
    Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_VendeItem( '000001', 'Produto 01 ','II','F', '10,055', 3,  '2,589', '$', '0' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0', totalc,'Volte Sempre');
    if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Resposta:= ECF_CancelaCupom;
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Exit;
        end;
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

  If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();
end;


procedure TForm1.Button18Click(Sender: TObject);
var totalc: array[0..14] of char;
    sUltimoItem: array[0..4] of char;
begin
    Resposta:=0;

    Resposta:= ECF_AbreCupomMFD( '11.222.333-45','Fulano de Tal','Rua X, 1234');
    Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

    Resposta:= ECF_VendeItem( '7898920499034', 'PAO  INTEGRAL PELE 400G','II','I', '0001', 2,  '00000220', '%', '0000' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);//Verificar se o valor confere com o software

    Resposta:= ECF_VendeItem( '7898920499034', 'PAO  INTEGRAL PELE 400G','II','I', '0001', 2,  '00000220', '%', '0000' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);//Verificar se o valor confere com o software}

    Resposta:= ECF_VendeItem( '000001', 'Produto 05 ','II','I', '1,6', 2,  '200', '$', '0' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);//Verificar se o valor confere com o software

    Resposta:= ECF_VendeItem( '000001', 'Produto 05 ','II','F', '2568', 2,  '200', '$', '0' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    Resposta:= ECF_VendeItem( '7898920499034', 'PAO  INTEGRAL PELE 400G','II','I', '0001', 2,  '00000220', '%', '0000' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));
    
    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);//Verificar se o valor confere com o software

    Resposta:= ECF_UltimoItemVendido(sUltimoItem);
    Memo1.Lines.Add('Ultimo Item:'+sUltimoItem);//Verificar se o item confere com o software

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0', totalc,'Volte Sempre');
    if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Resposta:= ECF_CancelaCupom;
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Exit;
        end;
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

  If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();
end;


procedure TForm1.Button19Click(Sender: TObject);
var totalc: array[0..14] of char;
begin
    Resposta:=0;

    Resposta:= ECF_AbreCupomMFD( '11.222.333-45','Fulano de Tal','Rua X, 1234');
    Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_VendeItem( '000001', 'Produto 01 ','II','I', '10', 2,  '2,00', '$', '0' );
    Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_IniciaFechamentoCupom( 'D', '$','0,02' );
    Memo1.Lines.Add('IniciaFechamento:'+inttostr(Resposta));

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);

    If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0', totalc,'Volte Sempre');
    if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Resposta:= ECF_CancelaCupom;
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Exit;
        end;
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

  If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.edtSint1Click(Sender: TObject);
var sArquivo, sTipoDownload, sCOOInicial, sCOOFinal, sUsuario :String;
begin
sArquivo      := 'DOWNLOAD.txt';
sTipoDownload := '1';
sCOOInicial   := '11/11/2008';
sCOOFinal     := '11/11/2008';
sUsuario      := '1';
Resposta  :=  ECF_DownloadMFD ( pchar(sArquivo),pchar(sTipoDownload),pchar(sCOOInicial),pchar(sCOOFinal),pchar(sUsuario));
Memo1.Lines.Add('ECF_DownloadMFD:'+IntToStr(Resposta));
end;

procedure TForm1.Button24Click(Sender: TObject);
var NumeroSerie: String;
var i:integer;
begin
for i := 1 to 20 do NumeroSerie := NumeroSerie + ' ';
Resposta := ECF_NumeroSerieMFD(NumeroSerie);
Memo1.Lines.Add('ECF_DownloadMF:'+IntToStr(Resposta));
Memo1.Lines.Add('SN:'+NumeroSerie);
end;

procedure TForm1.Bt_AbreRemotoClick(Sender: TObject);
var resposta:integer;
begin
        Resposta:=ECF_AbreConnectC(1,'C:\CONNECTC_REMOTO');
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Abre ConnectC (Remoto):'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.btnCancelaItemAnteriorClick(Sender: TObject);
begin
Resposta:= ECF_CancelaItemAnterior;
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Cancela Item Anterior:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.btnECF_FechaCupomClick(Sender: TObject);
begin
Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0', '10.00','Volte Sempre');
    if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Resposta:= ECF_CancelaCupom;
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Exit;
        end;
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

  If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.btnECF_VendeItemClick(Sender: TObject);
begin

        //Resposta := ECF_AumentaDescricaoItem('Leite longa vida integral UHT     '+chr(183));
        //Memo1.Lines.Add('Aumenta Descricao:'+inttostr(Resposta));

        Resposta:= ECF_VendeItemDepartamento( '111111111111111111111', 'Produto 01','FF','40000', '1000', '0',  '0', '01', 'KG' );
        Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

        //Resposta :=ECF_VendeItem('10', 'MOSQUETAO C/ GIRADOR REDONDO', 'FF', 'F', '10,010', 3, '2,101', '%', '0000');

        If Resposta < 1 then
                StatusECF ()
        Else
        RetornoECF();

        //Resposta := ECF_AumentaDescricaoItem('Vigor                             '+chr(183));
        //Memo1.Lines.Add('Aumenta Descricao:'+inttostr(Resposta));
        //Resposta:= ECF_VendeItem( '000002', 'Produto 02','01','I', '1', 2,  '1.00', '$', '0' );
        //Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Resposta:= ECF_CancelaItemGenerico(pchar('002'));
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Cancela Item Generico:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Resposta := ECF_Sangria (pchar('100,00'));
        Memo1.Lines.Add('');
        Memo1.Lines.Add('Sangria:'+inttostr(Resposta));
        Memo1.Lines.Add('');

         If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
var indic: string;
begin
SetLength (Indic,2);
Resposta := ECF_StatusComprovanteNaoFiscalVinculado(indic);
  Memo1.Lines.Add('');
  Memo1.Lines.Add('Status CNFV:'+inttostr(Resposta));
  Memo1.Lines.Add('Status Real:'+indic);
  Memo1.Lines.Add('');

  If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
    Resposta:=0;

    Resposta:= ECF_AbreRecebimentoNaoFiscalMFD( '11.222.333-45','Fulano de Tal','Rua X, 1234');
    Memo1.Lines.Add('Abrir Recebimento Não Fiscal:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
     
    Resposta:= ECF_EfetuaRecebimentoNaoFiscalMFD(edtIndiceLeg.Text,'100,00');
    Memo1.Lines.Add('Efetua Recebimento Não Fiscal:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_TotalizaRecebimentoMFD;
    Memo1.Lines.Add('Totaliza Recebimento Não Fiscal:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_EfetuaFormaPagamentoMFD(edtMeioPagamento.Text,'100,00','1','');
    Memo1.Lines.Add('Efetua Pagamento Não Fiscal:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

    Resposta:= ECF_FechaRecebimentoNaoFiscalMFD('MENSAGEMMMMMMMMMMMMMMMMMMMMMMM');
    Memo1.Lines.Add('Fecha Recebimento Não Fiscal:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
var cLinhas: String;
begin

  Resposta:= ECF_AbreComprovanteNaoFiscalVinculado(edtMeioPagamento.Text, '10.00', '0000');
  Memo1.Lines.Add('Abrir TEF:'+inttostr(Resposta));
  If Resposta > 0 then
     StatusECF ()
  Else
  RetornoECF();

  form2.showmodal;
  cLinhas := form2.Memo1.Text;
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
  Memo1.Lines.Add('Usa Comprovante:'+inttostr(Resposta));
  Resposta  := ECF_UsaComprovanteNaoFiscalVinculado(pchar(cLinhas));
end;

procedure TForm1.BitBtn8Click(Sender: TObject);
begin
Memo1.Lines.Add('Impressão de texto:'+inttostr(Resposta));
        Resposta:= ECF_FechaComprovanteNaoFiscalVinculado();
        Memo1.Lines.Add('Fechar TEF:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TForm1.BitBtn9Click(Sender: TObject);
begin
Resposta:= ECF_IdentificaConsumidor ('José Antonio', 'Rua das Graças,01', '357.688.968-05');
Memo1.Lines.Add('ECF_IdentificaConsumidor:'+inttostr(Resposta));
Memo1.Lines.Add('');
end;

procedure TForm1.Button22Click(Sender: TObject);
begin
Resposta := ECF_TerminaFechamentoCupom('');
Memo1.Lines.Add('ECF_TerminaFechamentoCupom:'+inttostr(Resposta));
Memo1.Lines.Add('');
end;

procedure TForm1.BitBtn10Click(Sender: TObject);
begin
//Resposta := ECF_EfetuaFormaPagamentoMFD(edtMeioPagamento.Text,'100,00','10','Pagamento com 10 parcelas');
//Memo1.Lines.Add('ECF_EfetuaFormaPagamentoMFD:'+inttostr(Resposta));
//Memo1.Lines.Add('');

//Resposta := ECF_EfetuaFormaPagamentoIndice ('01','50,00');
//Memo1.Lines.Add('ECF_EfetuaFormaPagamentoMFD:'+inttostr(Resposta));
//Memo1.Lines.Add('');

Resposta := ECF_EfetuaFormaPagamentoIndiceDescricaoForma ('01','50,00','Pago valor');
Memo1.Lines.Add('ECF_EfetuaFormaPagamentoMFD:'+inttostr(Resposta));
Memo1.Lines.Add('');

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Resposta := ECF_AcionaGaveta();
Memo1.Lines.Add('ECF_AcionaGaveta:'+inttostr(Resposta));
Memo1.Lines.Add('');
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Resposta:= ECF_AbreRelatorioGerencial();
Memo1.Lines.Add('Abrir Relatorio Gerencial (TEF):'+inttostr(Resposta));

Resposta := ECF_ConfiguraCodigoBarrasMFD( 162, 0, 2, 0, 0 );
Memo1.Lines.Add('Configuração do Codigo de Barras:'+inttostr(Resposta));
Memo1.Lines.Add('');

Resposta := ECF_CodigoBarrasCODE39MFD(pchar('ABC-123'));
Memo1.Lines.Add('Impressão Codigo de Barras CODE69MFD:'+inttostr(Resposta));
Memo1.Lines.Add(''); //ST1000 somente para mecanismo Epson.

Resposta := ECF_CodigoBarrasEAN13MFD(pchar('123456789012'));
Memo1.Lines.Add('Impressão Codigo de Barras EAN13MFD:'+inttostr(Resposta));
Memo1.Lines.Add('');

Resposta := ECF_CodigoBarrasPDF417MFD( 4, 3, 2, 0, '000000PA0');
Memo1.Lines.Add('Impressão Codigo de Barras PDF417MFD:'+inttostr(Resposta));
Memo1.Lines.Add('');


Resposta:= ECF_FechaRelatorioGerencial();
Memo1.Lines.Add('Fecha Relátório):'+inttostr(Resposta));


end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Resposta := ECF_ReproduzirMemoriaFiscalMFD (edtTipo.Text,edtDtInicial.Text,edtDtFinal.Text,edtArquivo.Text,edtPath.Text);
Memo1.Lines.Add('Geração do Arquivo da Nota Fiscal Paulista:'+inttostr(Resposta));
Memo1.Lines.Add('');

  If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn11Click(Sender: TObject);

var i, j, cupons, itens, ultimoitem: integer;
        Data, Hora, DataPC, HoraPC, codigo: string;
        totalc: array[0..14] of char;
        Total, SubTotal: Double;
        sUltimoItem: array[0..4] of char;
        NumeroSerie: String;

begin
    cupons:= StrtoInt(edtCupons.Text);
    itens:= StrtoInt(edtItens.Text);

    for i := 1 to 6 do Data := Data + ' ';
    for i := 1 to 6 do Hora := Hora + ' ';

    for j:=1 to cupons do begin
      Resposta:=0;
      ultimoitem := 0;
      Resposta:= ECF_AbreCupom('');
      Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));
      Total:= 0;

        for i := 1 to 20 do NumeroSerie := NumeroSerie + ' ';
        Resposta := ECF_NumeroSerieMFD(NumeroSerie);
        Memo1.Lines.Add('ECF_DownloadMF:'+IntToStr(Resposta));
        Memo1.Lines.Add('SN:'+NumeroSerie);

      for i:=1 to itens do begin

          codigo:= Formatdatetime('ddmmyyhhmmss',now );
          Resposta:= ECF_VendeItem( codigo, 'Produto'+InttoStr(i),'II','I', '1', 2,  '01', '%', '00,00' );
          Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));


          //incrementa as variaveis de controle (Item e subtotal)
          ultimoitem := ultimoitem+1;
          Total:= Total + 01;

          //controlando data entre o ECF e o aplicativo:
          Memo1.Lines.Add('D A T A :-------------------------------------------------------------------');

          Resposta:= ECF_DataHoraImpressora( Data, Hora );
          Memo1.Lines.Add('ECF_DataHoraImpressora:'+inttostr(Resposta));
          Memo1.Lines.Add('DataECF:' + Data+ '  -  HoraECF:'+ Hora);

          DataPC := Formatdatetime('ddmmyy',now );
          HoraPC := Formatdatetime('hhmmss',now );

          Memo1.Lines.Add('DataPC:' + DataPC+ '  -  HoraPC:'+ HoraPC);

          if (Data<>DataPC) and (Hora<>HoraPC) then
            begin
              Memo1.Lines.Add('DATA OU HORA DIFERENTE ECF/COMPUTADOR!');
            end
            else
              begin
              Memo1.Lines.Add('O K !');
            end;


          Memo1.Lines.Add('------------------------------------------------------------------------');
          Resposta:= ECF_VerificaImpressoraLigada();
          Memo1.Lines.Add('Impressora Ligada:'+inttostr(Resposta));

          if Resposta<>1 then
            Memo1.Lines.Add('IMPRESSORA DESLIGADA?!');
          Memo1.Lines.Add('------------------------------------------------------------------------');

          end;

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);
    SubTotal:= (StrToFloat(totalc));

    If Subtotal <> Total then begin
      Memo1.Lines.Add('Subtotal:'+FloatToStr(SubTotal));
      Memo1.Lines.Add('Subtotal:'+FloatToStr(Total));
      Showmessage('Erro no subtotal!!!!!!!!!!');
    end;

    Resposta:= ECF_UltimoItemVendido(sUltimoItem);
    Memo1.Lines.Add('Ultimo Item:'+sUltimoItem);

    if StrToInt(sUltimoItem) <> ultimoitem then
      begin
        Memo1.Lines.Add('Ultimo Item:'+sUltimoItem);
        Memo1.Lines.Add('Ultimo Item:'+IntToStr(ultimoitem));
        Showmessage ('Erro de Item!!!');
      end
    else
      begin
        Memo1.Lines.Add('O K !');
      end;

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0',totalc ,'Volte Sempre');
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');
   end;
  end;

procedure TForm1.BitBtn12Click(Sender: TObject);
var i: integer;
        Data, Hora: string;
begin

    for i := 1 to 6 do Data := Data + ' ';
    for i := 1 to 6 do Hora := Hora + ' ';


    For i:=1 to 100 do begin
    Resposta:= ECF_DataHoraImpressora( Data, Hora );
    Memo1.Lines.Add('ECF_DataHoraImpressora:'+inttostr(Resposta));
    Memo1.Lines.Add(inttostr(i) + ' - Data:' + Data + '  -  Hora:'+ Hora);


    end;
end;

procedure TForm1.BitBtn13Click(Sender: TObject);
begin
 Resposta:= ECF_GeraRegistrosCAT52MFD(edtCaminho.Text,edtDataDia.Text);
Memo1.Lines.Add('ECF_GerarRegistrosCAT52:'+inttostr(Resposta));
If Resposta > 0 then
     begin
     StatusECF ();
     ShowMessage('Arquivo OK!');
     end
    Else
     RetornoECF();
end;

procedure TForm1.BitBtn14Click(Sender: TObject);
begin

Resposta:= ECF_ProgramarCliche(chr(16) + 'C' + EdtRaz.Text, chr(16) + 'C' + CbFant.Text,chr(16) + 'C' + EdtEndereco.Text + chr(10) + chr(13) + chr(16) + 'C' + EdtEndereco2.Text);
Memo1.Lines.Add('Programa:'+inttostr(Resposta));

end;

procedure TForm1.BitBtn15Click(Sender: TObject);
begin
Resposta:= ECF_VerificaImpressoraLigada();
Memo1.Lines.Add('Impressora Ligada:'+inttostr(Resposta));
end;

procedure TForm1.bitAbrirClick(Sender: TObject);
begin
AbrirArquivo.Execute;
edtCaminho.Text:=AbrirArquivo.FileName;
end;

procedure TForm1.BitBtn16Click(Sender: TObject);
var i:integer;
sTotalizadores:String;

begin
for i := 1 to 179 do sTotalizadores := sTotalizadores + ' ';
Resposta:= ECF_VerificaTotalizadoresNaoFiscais(sTotalizadores );
Memo1.Lines.Add('Impressora Ligada:'+inttostr(Resposta));
Memo1.Lines.Add('Totalizadores Cadastrados:'+sTotalizadores);

Memo1.Lines.Add('________________________________________________________');

for i := 1 to 599 do sTotalizadores := sTotalizadores + ' ';
Resposta:= ECF_VerificaTotalizadoresNaoFiscaisMFD(sTotalizadores );
Memo1.Lines.Add('ECF_VerificaTotalizadores:'+inttostr(Resposta));
Memo1.Lines.Add('Totalizadores Cadastrados:'+sTotalizadores);
end;

procedure TForm1.BitBtn17Click(Sender: TObject);
begin
Memo1.Lines.Add('COMEÇA O PROCESSO DE AUTENTICAÇÃO:');
Memo1.Lines.Add('VERIFICANDO SE EXISTE DOCUMENTO PARA AUTENTICAÇÃO');
Resposta:= ECF_VerificaDocAutenticacao;
Memo1.Lines.Add('TEM DOCUMENTO:'+inttostr(Resposta));

If Resposta = 1 then
        begin
        ShowMessage('TEM DOCUMENTO!/FOI AUTENTICADO!');
        end
else
        begin
        ShowMessage('NÃO TEM DOCUMENTO!/NÃO FOI AUTENTICADO!');
        end
end;

procedure TForm1.Button21Click(Sender: TObject);
var
legenda: string;
indice: integer;
begin

indice:= StrtoInt(edtIndice.Text);
legenda:= edtLegenda.Text;

Memo1.Lines.Add('PROGRAMAÇÃO DE TOTALIZADORES NÃO FISCAIS:');
Memo1.Lines.Add('                                         ');
Resposta:= ECF_NomeiaTotalizadorNaoSujeitoIcms(indice,pchar(legenda));

If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
Memo1.Lines.Add('PROGRAMAÇÃO DE TOTALIZADORES NÃO FISCAIS:');
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Memo1.Lines.Add('COMEÇOU A AUTENTICAÇÃO................');

Resposta:= ECF_AutenticacaoMFD('5','RG 12345678 tel 9876543');
Memo1.Lines.Add('Autenticacao:'+inttostr(Resposta));

Memo1.Lines.Add('AUTENTICAÇÃO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
RetornoECF();
end;

procedure TForm1.BitBtn18Click(Sender: TObject);
var GrandeTotal: String;
var i:integer;
begin
for i := 1 to 18 do GrandeTotal := GrandeTotal + ' ';
Resposta := ECF_GrandeTotal(GrandeTotal);
Memo1.Lines.Add('Grande Total:'+GrandeTotal);

end;

procedure TForm1.BitBtn19Click(Sender: TObject);
var SubTotal: String;
var i:integer;
begin
for i := 1 to 14 do SubTotal := SubTotal + ' ';
Resposta := ECF_SubTotal(pchar(SubTotal));
Memo1.Lines.Add('SubTotal:'+SubTotal);

end;

procedure TForm1.BitBtn20Click(Sender: TObject);
begin
Memo1.Lines.Add('INICIA FECHAMENTO DE CUPOM');
Resposta := ECF_IniciaFechamentoCupom('','','');
Memo1.Lines.Add('ECF_IniciaFechamento:'+inttostr(Resposta));
Memo1.Lines.Add('INICIA FECHAMENTO DE CUPOM');

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var i: integer;
    sNumeroCupom: String;
begin
for i := 1 to 6 do sNumeroCupom := sNumeroCupom + ' ';
Resposta := ECF_NumeroCupom(sNumeroCupom);
Memo1.Lines.Add('Função:'+inttostr(Resposta));
Memo1.Lines.Add('ECF_NumeroCupom:'+sNumeroCupom);


end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
var i: integer;
    sNumeroCupom: String;
begin
for i := 1 to 6 do sNumeroCupom := sNumeroCupom + ' ';
Resposta := ECF_ContadorCupomFiscalMFD(sNumeroCupom);
Memo1.Lines.Add('Função:'+inttostr(Resposta));
Memo1.Lines.Add('ECF_ContadorCupomFiscalMFD:'+sNumeroCupom);
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
AbrirArquivo.Execute;
edtPath.Text:=AbrirArquivo.FileName;
end;

procedure TForm1.BitBtn21Click(Sender: TObject);
begin
salvar.Execute;
edtArquivo.Text:=Salvar.FileName;
end;

procedure TForm1.BTVIClick(Sender: TObject);
var i, j, cupons, itens, ultimoitem: integer;
        Data, Hora, DataPC, HoraPC, codigo: string;
        totalc: array[0..14] of char;
        Total, SubTotal: Double;
        sUltimoItem: array[0..4] of char;
        NumeroSerie: String;
        ack, st1,st2,st3:integer;

begin
    cupons:= StrtoInt(edtCupons.Text);
    itens:= StrtoInt(edtItens.Text);

    for i := 1 to 6 do Data := Data + ' ';
    for i := 1 to 6 do Hora := Hora + ' ';

    for j:=1 to cupons do begin
      Resposta:=0;
      ultimoitem := 0;
      Resposta:= ECF_AbreCupom('');
      Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));
      Total:= 0;

        for i := 1 to 20 do NumeroSerie := NumeroSerie + ' ';
        Resposta := ECF_NumeroSerieMFD(NumeroSerie);
        Memo1.Lines.Add('ECF_DownloadMF:'+IntToStr(Resposta));
        Memo1.Lines.Add('SN:'+NumeroSerie);

      for i:=1 to itens do begin

          codigo:= Formatdatetime('ddmmyyhhmmss',now );
          Resposta:= ECF_VendeItem( codigo, 'Produto'+InttoStr(i),'II','I', '1', 2,  '01', '%', '00,00' );
          Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));


          //incrementa as variaveis de controle (Item e subtotal)
          ultimoitem := ultimoitem+1;
          Total:= Total + 01;

          Resposta:= ECF_RetornoImpressoraMFD( ack, st1, st2, st3);
          Memo1.Lines.Add('VerificaImpressoraMFD:'+inttostr(Resposta));


          //controlando data entre o ECF e o aplicativo:
//          Memo1.Lines.Add('D A T A :-------------------------------------------------------------------');

//          Resposta:= ECF_DataHoraImpressora( Data, Hora );
//          Memo1.Lines.Add('ECF_DataHoraImpressora:'+inttostr(Resposta));
//          Memo1.Lines.Add('DataECF:' + Data+ '  -  HoraECF:'+ Hora);

//          DataPC := Formatdatetime('ddmmyy',now );
//          HoraPC := Formatdatetime('hhmmss',now );
//
          Memo1.Lines.Add('DataPC:' + DataPC+ '  -  HoraPC:'+ HoraPC);

//          if (Data<>DataPC) and (Hora<>HoraPC) then
//            begin
//              Memo1.Lines.Add('DATA OU HORA DIFERENTE ECF/COMPUTADOR!');
//            end
//            else
//              begin
//              Memo1.Lines.Add('O K !');
//            end;


//          Memo1.Lines.Add('------------------------------------------------------------------------');
//          Resposta:= ECF_VerificaImpressoraLigada();
//          Memo1.Lines.Add('Impressora Ligada:'+inttostr(Resposta));

//          if Resposta<>1 then
//            Memo1.Lines.Add('IMPRESSORA DESLIGADA?!');
//          Memo1.Lines.Add('------------------------------------------------------------------------');

          end;

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);
    SubTotal:= (StrToFloat(totalc));

    If Subtotal <> Total then begin
      Memo1.Lines.Add('Subtotal:'+FloatToStr(SubTotal));
      Memo1.Lines.Add('Subtotal:'+FloatToStr(Total));
//      Showmessage('Erro no subtotal!!!!!!!!!!');
    end;

    Resposta:= ECF_UltimoItemVendido(sUltimoItem);
    Memo1.Lines.Add('Ultimo Item:'+sUltimoItem);

    if StrToInt(sUltimoItem) <> ultimoitem then
      begin
        Memo1.Lines.Add('Ultimo Item:'+sUltimoItem);
        Memo1.Lines.Add('Ultimo Item:'+IntToStr(ultimoitem));
//        Showmessage ('Erro de Item!!!');
      end
    else
      begin
        Memo1.Lines.Add('O K !');
      end;

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0',totalc ,'Volte Sempre');
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');
   end;
end;

procedure TForm1.Button20Click(Sender: TObject);
begin

Resposta := ECF_ProgramaFormaPagamentoMFD(pchar(edtForma.Text),pchar(edtTipoV.Text));
Memo1.Lines.Add('Programação de Meios de Pagamento:'+inttostr(Resposta));
Memo1.Lines.Add('');
end;

procedure TForm1.btnJanelasClick(Sender: TObject);
begin

Resposta := ECF_LigaDesligaJanelas('1', '1');

If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
     
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);

begin
Resposta := ECF_LigaDesligaJanelas('0', '0');

If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.btnMovimentoClick(Sender: TObject);
var
sDataMov: String;
sDataMov2: String;
i: Integer;
begin
for i := 1 to 6 do sDataMov := sDataMov + ' ';
for i := 1 to 6 do sDataMov2 := sDataMov2 + ' ';

Resposta := ECF_DataMovimentoUltimaReducaoMFD(sDataMov);
Memo1.Lines.Add('Data de Movimento Ultima Redução:'+IntToStr(Resposta));
Memo1.Lines.Add('Retorno:'+sDataMov);

Resposta := ECF_DataMovimento(sDataMov2);
Memo1.Lines.Add('Data de Movimento:'+IntToStr(Resposta));
Memo1.Lines.Add('Retorno:'+sDataMov2);


end;

procedure TForm1.btnSIN1Click(Sender: TObject);
begin
Resposta:=0;

    Resposta:= ECF_RegistrosTipo60();
    Memo1.Lines.Add('Registros Tipo 60'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.btnSIN2Click(Sender: TObject);
begin
Resposta:=0;

    Resposta:= ECF_RelatorioTipo60Mestre();
    Memo1.Lines.Add('Registros Tipo 60 Mestre'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.btnSIN3Click(Sender: TObject);
begin

Resposta:=0;

    Resposta:= ECF_RelatorioTipo60Analitico();
    Memo1.Lines.Add('Registros Tipo 60 Mestre'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.btnSIN4Click(Sender: TObject);
begin
Resposta:=0;

    Resposta:= ECF_RelatorioTipo60AnaliticoMFD();
    Memo1.Lines.Add('Registros Tipo 60 Analitico MFD'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
Resposta:= ECF_RelatorioSintegraMFD(63,pchar('C:\SINTEGRA.TXT'), pchar('03'), pchar('2009'), pchar('Sweda Informática Ltda'),
pchar('Rua Dona Brigida'),pchar('713'),pchar('13 andar'),pchar('Vila Mariana'),
pchar('São Paulo - SP'),pchar('08310530'),pchar('(11)5574-5644'),pchar('(11)5574-5644'),
pchar('Fellipe Kennedy') );

Memo1.Lines.Add('ECF_RelatorioSintegraMFD:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
Resposta:= ECF_LeituraXSerial;
Memo1.Lines.Add('Leitura X Serial:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
Resposta:= ECF_LeituraMemoriaFiscalSerialData('01/08/2008', '10/08/2008');
Memo1.Lines.Add('Leitura MF Serial:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.Button23Click(Sender: TObject);
var i, j, cupons, itens: integer;
var indic: string;
begin
Resposta:=0;
cupons:= StrtoInt(edtCupons.Text);
itens:= StrtoInt(edtItens.Text);

    for j:=1 to cupons do begin
    //Abre Cupom
    Resposta:= ECF_AbreCupomMFD( '','','');
    Memo1.Lines.Add('-----------------------------------------------------------');
    Memo1.Lines.Add('-----------------------------------------------------------');
    Memo1.Lines.Add('-- -- -- Abrir Cupom:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

     For i:=1 to itens do begin
    //Vende Item
    Resposta := ECF_VendeItemDepartamento( '897','Presunto','F1','000100000','2','0','0','0','KG');
    Memo1.Lines.Add('-- -- -- Vende Item:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
    end;
    //Vende Item  sem a alicota cadastrada para teste...
    Resposta := ECF_VendeItemDepartamento( '897','Presunto','2300','000100000','2','0','0','0','KG');
    Memo1.Lines.Add('-- -- -- Vende Item:'+inttostr(Resposta));

     //Verifica se o cupom está aberto..
     SetLength (Indic,2);
     Resposta := ECF_StatusCupomFiscal(indic);
     Memo1.Lines.Add('');
     Memo1.Lines.Add('Status Cupom:'+inttostr(Resposta));
     Memo1.Lines.Add('Status Real:'+indic);
     Memo1.Lines.Add('');

     if indic<>'00' then
     begin
     ShowMessage('Cupom Aberto');
     end;
  If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
    
     end;


     //Efetua Forma de Pagamento
     Resposta := ECF_EfetuaFormaPagamentoMFD(edtMeioPagamento.Text,'100,00','10','Pagamento com 10 parcelas');
     Memo1.Lines.Add('-- -- -- Pagamento'+inttostr(Resposta));
     If Resposta > 0 then
     StatusECF ()
     Else
     RetornoECF();

     // Termina Fechamento
     Resposta := ECF_TerminaFechamentoCupom('');
     Memo1.Lines.Add('-- -- -- Fechamento do Cupom:'+inttostr(Resposta));
     Memo1.Lines.Add('');
     If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

     Memo1.Lines.Add('-----------------------------------------------------------');
     Memo1.Lines.Add('-----------------------------------------------------------');
     end;


procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
  if (ECF_AbrePortaSerial()=1) then
     ShowMessage('Porta serial aberta')
  else
     ShowMessage('Porta serial fechada.');

  if (ECF_VerificaImpressoraLigada()=1) then
     ShowMessage('Impressora ligada')
  else
     ShowMessage('Impressora desligada');

  if (ECF_FechaPortaSerial()=1) then
     showmessage('Fechou a porta serial.')
  else
     showmessage('Falha ao fechar a porta serial.');
     if (ECF_AbrePortaSerial()=1) then
     ShowMessage('Porta serial aberta')
  else
     ShowMessage('Porta serial fechada.');

  if (ECF_VerificaImpressoraLigada()=1) then
     ShowMessage('Impressora ligada')
  else
     ShowMessage('Impressora desligada');

  if (ECF_FechaPortaSerial()=1) then
     showmessage('Fechou a porta serial.')
  else
     showmessage('Falha ao fechar a porta serial.');
     if (ECF_AbrePortaSerial()=1) then
     ShowMessage('Porta serial aberta')
  else
     ShowMessage('Porta serial fechada.');

  if (ECF_VerificaImpressoraLigada()=1) then
     ShowMessage('Impressora ligada')
  else
     ShowMessage('Impressora desligada');

  if (ECF_FechaPortaSerial()=1) then
     showmessage('Fechou a porta serial.')
  else
     showmessage('Falha ao fechar a porta serial.');
     if (ECF_AbrePortaSerial()=1) then
     ShowMessage('Porta serial aberta')
  else
     ShowMessage('Porta serial fechada.');

  if (ECF_VerificaImpressoraLigada()=1) then
     ShowMessage('Impressora ligada')
  else
     ShowMessage('Impressora desligada');

  if (ECF_FechaPortaSerial()=1) then
     showmessage('Fechou a porta serial.')
  else
     showmessage('Falha ao fechar a porta serial.');
     if (ECF_AbrePortaSerial()=1) then
     ShowMessage('Porta serial aberta')
  else
     ShowMessage('Porta serial fechada.');

  if (ECF_VerificaImpressoraLigada()=1) then
     ShowMessage('Impressora ligada')
  else
     ShowMessage('Impressora desligada');

  if (ECF_FechaPortaSerial()=1) then
     showmessage('Fechou a porta serial.')
  else
     showmessage('Falha ao fechar a porta serial.');

end;

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
Resposta := ECF_EstornoFormasPagamento('DINHEIRO','CARTAO','50,00');
Memo1.Lines.Add('-- -- -- Estorno'+inttostr(Resposta));
If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();


Resposta := ECF_EstornoFormasPagamento('DINHEIRO','CHEQUE','50,00');
Memo1.Lines.Add('-- -- -- Estorno'+inttostr(Resposta));

end;

procedure TForm1.SpeedButton12Click(Sender: TObject);
var pag:string;
var i: integer;
begin
for i := 1 to 1045 do pag := pag + ' ';
Resposta := ECF_VerificaFormasPagamentoEx(pag);
Memo1.Lines.Add('Resposta da Função:'+inttostr(Resposta));
Memo1.Lines.Add('Meios de Pagamento:'+pag);


end;

procedure TForm1.SpeedButton13Click(Sender: TObject);
var Guilhotina,Velocidade,Modo,Beep: String;
begin
//Disponivel somente na versão 5.0.0.2 ou superior da CONVECF.DLL

   //Seleciona Guilhotina
   case RGui.ItemIndex of
       0 : Guilhotina := '1';
       1 : Guilhotina := '2';
       2 : Guilhotina := '3';
   else ShowMessage('Selecione o parametro de guilhotina');
   end;

   //Seleciona Velocidade
   Velocidade:= ComboBox1.Text;

   //Seleciona Modo
   case CBModo.ItemIndex of
       0 : Modo := '1';
       1 : Modo := '2';
   else ShowMessage('Selecione o parametro do modo');
   end;

   //Seleciona Beep
   case CBBeep.ItemIndex of
       0 : Beep := '1';
       1 : Beep := '2';
   else ShowMessage('Selecione o parametro do Beep');
   end;


  Resposta := ECF_ConfigurarECF(Guilhotina,Velocidade,'1',Beep);
  Memo1.Lines.Add('');
  Memo1.Lines.Add('Configura ECF:'+inttostr(Resposta));
  
end;

procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
 //Usando o Registry do Windows

 {Resposta:= ECF_Registry();
 Memo1.Lines.Add('');
 Memo1.Lines.Add('ECF_Registry:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('Log','1');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Log:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('Verão','0');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Verão:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('ZAuto','1');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('ZAuto: '+inttostr(Resposta));
 Memo1.Lines.Add('');  }

 ECF_Registry_CupomMania('1');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Mania Cupom:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('Aplicativo','Sweda Informática - Aplicativo Exemplo......................................');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Aplicativo: '+inttostr(Resposta));
 Memo1.Lines.Add('');

  Resposta:= ECF_Registry_AlteraRegistry('Mania','1');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Mania: '+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('AplMensagem1','Sweda Informática - Aplicativo Exemplo | er');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Aplicativo1: '+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('AplMensagem2','75 anos inovando');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Aplicativo1: '+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('Path','C:\SWEDA');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Path:'+inttostr(Resposta));
 Memo1.Lines.Add('');

 Resposta:= ECF_Registry_AlteraRegistry('PathMFD','C:\SWEDA');
 Memo1.Lines.Add('');
 Memo1.Lines.Add('Aplicativo1:'+inttostr(Resposta));
 Memo1.Lines.Add('');
end;

procedure TForm1.SpeedButton15Click(Sender: TObject);
var sCOOInicial, sCOOFinal: string;
var i: integer;
begin
for i := 1 to 6 do sCOOInicial := sCOOInicial + ' ';
for i := 1 to 6 do sCOOFinal := sCOOFinal + ' ';
Resposta := ECF_InicioFimCOOsMFD(sCOOInicial, sCOOFinal);
 Memo1.Lines.Add('');
 Memo1.Lines.Add('ECF_InicioFimCOOsMFD:'+inttostr(Resposta));
 Memo1.Lines.Add('Inicial:'+sCOOInicial);
 Memo1.Lines.Add('Final'+sCOOFinal);
end;

procedure TForm1.sbtnECF_AbreCupomMFDClick(Sender: TObject);
var resp: string;
    i: integer;
begin
Resposta:=0;

    Resposta:= ECF_AbreCupomMFD( '','','');
    Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

    If Resposta > 0 then
     StatusECF ()
    Else
begin
    {for i := 1 to 512 do resp := resp + ' ';
    Resposta:= ECF_ObterMensagemStatus(Pchar(resp));
    Memo1.Lines.Add('Menssagem de erro:'+resp);}

    for i := 1 to 512 do resp := resp + ' ';
    Resposta:= ECF_ObterMensagemStatus(resp);
    Memo1.Lines.Add('Menssagem de erro:'+resp);
end
end;

procedure TForm1.SpeedButton16Click(Sender: TObject);
var dataUsuario, dataSWBasico, MFAdicional: string;
begin

SetLength(dataUsuario,20);
SetLength(dataSWBasico,20);
SetLength(MFAdicional,5);

Resposta := ECF_DataHoraGravacaoUsuarioSWBasicoMFAdicional(dataUsuario,dataSWBasico,MFAdicional);
Memo1.Lines.Add('');
Memo1.Lines.Add('ECF_DataHoraGravacaoUsuarioSWBasicoMFAdicional:'+inttostr(Resposta));
Memo1.Lines.Add('Data Usuário:'+dataUsuario);
Memo1.Lines.Add('Data SB:'+dataSWBasico);
Memo1.Lines.Add('MF adicional:'+MFAdicional);
end;

procedure TForm1.SpeedButton17Click(Sender: TObject);
var iValor: integer;
var bValor:String[32];
begin

iValor:=0;
Resposta := ECF_FlagsFiscais3MFD(iValor);

Memo1.Lines.Add('');
Memo1.Lines.Add('ECF_FlagsFiscais3MFD:'+inttostr(Resposta));
Memo1.Lines.Add('Flags:'+IntToStr(iValor));

bValor:= IntToBin(iValor);

if bValor[32]='1' then
Memo1.Lines.Add('Impressora com pouco papel!');

if bValor[31]='1' then
Memo1.Lines.Add('Sensor de pouco papel habilitado!');

if bValor[28]='1' then
Memo1.Lines.Add('Desconto em ISS habilitado (igual a 1)!');

if bValor[27]='1' then
Memo1.Lines.Add('Redução Z automática (igual a 1)!');

if bValor[26]='1' then
Memo1.Lines.Add('ECF OFF LINE');

end;

procedure TForm1.SpeedButton18Click(Sender: TObject);
begin
Resposta:= ECF_VerificaModeloEcf();
Memo1.Lines.Add('MODELO ECF:'+inttostr(Resposta));
end;

procedure TForm1.SpeedButton19Click(Sender: TObject);
begin
Resposta:= ECF_ProgramaAliquota (edtAliquota.Text,StrToInt(edtTipoAliquota.Text));

If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Memo1.SetFocus;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
var sCMC7: String;
begin

for i := 1 to 36 do sCMC7 := sCMC7 + ' ';
Resposta:= ECF_LeituraChequeMFD( sCMC7 );
Memo1.Lines.Add('Função:'+inttostr(Resposta));
Memo1.Lines.Add('CMC7:'+sCMC7);

If Resposta > 0 then
     StatusECF ()
    Else
     RetornoECF();

end;

procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
Resposta:= ECF_ProgramaArredondamento();

Resposta:= ECF_AbreCupomMFD( '11.222.333-45','Fulano de Tal','Rua X, 1234');
Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));

Resposta:= ECF_VendeItem( '7898042190857', 'CORDA SEDA BRANCA 10 MM','01','F', '0,750', 3,  '14,420', '%', '0000' );
Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0', '100,00','Volte Sempre');
    if resposta=-24 then
        begin
                ShowMessage('Meio de Pagamento não cadastrado.');
                Resposta:= ECF_CancelaCupom;
                Memo1.Lines.Add('');
                Memo1.Lines.Add('Cancela Cupom Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Exit;
        end;
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

  If Resposta < 1 then
     StatusECF ()
    Else
     RetornoECF();


end;

procedure TForm1.btConfigClick(Sender: TObject);
begin
        if GBConfig.Visible=false then
                begin
                        GBConfig.Visible:=true;
                        btConfig.Caption:='Ocultar Configuração de Comunicação';
                end
        else
                begin
                        GBConfig.Visible:=false;
                        btConfig.Caption:='Visualizar Configuração de Comunicação';
        end

end;


procedure TForm1.SpeedButton21Click(Sender: TObject);
var i: integer;
    cniee,descr: String;
begin
for i := 1 to 6   do cniee := cniee + ' '; 
for i := 1 to 128 do descr := descr + ' '; 
Resposta := ECF_CodigoModeloFiscal(cniee,descr);
Memo1.Lines.Add('');
Memo1.Lines.Add('CINEE:'+inttostr(Resposta));
Memo1.Lines.Add('CINEE:'+cniee);
Memo1.Lines.Add('CINEE:'+descr);
Memo1.Lines.Add('');
end;

procedure TForm1.BitBtn22Click(Sender: TObject);
var i, j, cupons, itens, ultimoitem: integer;
        Data, Hora, DataPC, HoraPC, codigo: string;
        totalc: array[0..14] of char;
        Total, SubTotal: Double;
        sUltimoItem: array[0..4] of char;
        NumeroSerie: String;
        ack, st1,st2,st3:integer;

begin
    cupons:= StrtoInt(edtCupons.Text);
    itens:= StrtoInt(edtItens.Text);

    for i := 1 to 6 do Data := Data + ' ';
    for i := 1 to 6 do Hora := Hora + ' ';

    for j:=1 to cupons do begin
      Resposta:=0;
      ultimoitem := 0;
      Resposta:= ECF_AbreCupom('');
      Memo1.Lines.Add('Abrir Cupom:'+inttostr(Resposta));
      Total:= 0;

        for i := 1 to 20 do NumeroSerie := NumeroSerie + ' ';
        Resposta := ECF_NumeroSerieMFD(NumeroSerie);
        Memo1.Lines.Add('ECF_DownloadMF:'+IntToStr(Resposta));
        Memo1.Lines.Add('SN:'+NumeroSerie);

      for i:=1 to itens do begin

          codigo:= Formatdatetime('ddmmyyhhmmss',now );
          Resposta:= ECF_VendeItem( codigo, 'Produto'+InttoStr(i),'II','I', '1', 2,  '01', '%', '00,00' );
          Memo1.Lines.Add('Vender Item:'+inttostr(Resposta));

          //incrementa as variaveis de controle (Item e subtotal)
          ultimoitem := ultimoitem+1;
          Total:= Total + 01;

          Resposta:= ECF_RetornoImpressoraMFD( ack, st1, st2, st3);
          Memo1.Lines.Add('VerificaImpressoraMFD:'+inttostr(Resposta)+ ' '+ inttostr(ack)+ ' ' +inttostr(st1) + ' ' + inttostr( st2) + ' ' + inttostr(St3));


          end;

    Resposta:= ECF_Subtotal(totalc);
    Memo1.Lines.Add('Subtotal:'+totalc);
    SubTotal:= (StrToFloat(totalc));

    If Subtotal <> Total then begin
      Memo1.Lines.Add('Subtotal:'+FloatToStr(SubTotal));
      Memo1.Lines.Add('Subtotal:'+FloatToStr(Total));
    end;

    Resposta:= ECF_FechaCupom(edtMeioPagamento.Text, 'A', '$', '0',totalc ,'Volte Sempre');
    Memo1.Lines.Add('Fechar Cupom:'+inttostr(Resposta));
    Memo1.Lines.Add('');

    Resposta:= ECF_LeituraX();
    Memo1.Lines.Add('Leitura X:'+inttostr(Resposta));
    Memo1.Lines.Add('');
   end;
end;

end.
